2 qq 29460631 qq_29460631 于 2015.07.08 12:43 提问

VS2008MFC建立对话框,利用Skin++换肤不同步

图片说明利用Skin++对对话框进行动态换肤,界面大部分都改变,但是按钮等其他控件没有改变,只有当鼠标光标移动到按钮控件上面时,按钮控件才能发生对应皮肤的改变

4个回答

zuishikonghuan
zuishikonghuan   2015.07.08 12:58
已采纳

重画窗口中所有控件,首先获取所有按钮句柄,然后调用:
InvalidateRgn(hwnd,NULL,TRUE);//按钮窗口DC立即失效
UpdateWindow(hwnd);//立即响应WM_PAINT重画窗口

qq_29460631
qq_29460631 谢谢你的回答,我最后用重绘函数解决了问题
2 年多之前 回复
zuishikonghuan
zuishikonghuan 回复qq_29460631: 另外,如果是对话框的话可以用GetDlgItem这个API啊
2 年多之前 回复
zuishikonghuan
zuishikonghuan 回复qq_29460631: 我是玩win32sdk的,句柄要么是从对话框获取要么是用api创建时返回的,mfc没有用过几次,只记得没种控件例如按钮类都有一个GetSafeHandle方法可以得到句柄,具体你还是问百度吧
2 年多之前 回复
qq_29460631
qq_29460631 请问,如何获取按钮句柄(本人新手,请大神指教)
2 年多之前 回复
qq_29460631
qq_29460631 回复错了,sorry
2 年多之前 回复
qq_29460631
qq_29460631 没有图片资源,是skin++上自带的皮肤资源,后缀为ssk
2 年多之前 回复
91program
91program   Ds   Rxr 2015.07.08 12:49

Skin++,没有用过
是不是对应按键没有正常的图片资源,而只是鼠标移动到按键内的图片资源?

qq_29460631
qq_29460631 没有图片资源,是skin++上自带的皮肤资源,后缀为ssk
2 年多之前 回复
oyljerry
oyljerry   Ds   Rxr 2015.07.08 13:26

看上去是按钮没有设置正确,按理皮肤库应该可以支持按钮的。你的代码控制是否有问题

qq_29460631
qq_29460631 这是我的换肤代码
2 年多之前 回复
qq_29460631
qq_29460631 void CPLAYERDlg::OnChage() { // TODO: 在此添加命令处理程序代码 skinppLoadSkin(_T("MAC.ssk")); }
2 年多之前 回复
caozhy
caozhy   Ds   Rxr 2015.07.08 22:53

皮肤文件有问题,skin++的一些皮肤太老了,没有和windows 7测试过。

Csdn user default icon
上传中...
上传图片
插入图片