请问在VC下实现皮肤使用的是什么原理? 请问在VC下实现皮肤使用的是什么原理?怎样才能改变控件和窗口的外观?(请尽量详细一点)谢谢!!!!! 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 贴图原理:)改变控件和窗口的外观:int SetWindowRgn( HWND hWnd, // handle to window HRGN hRgn, // handle to region BOOL bRedraw // window redraw option); 使用皮肤其实就是自己拦截各个控件得WM_PAINT以及其它的一些附属消息,要做到拦截,最好就是通过HOOK来实现:SetWindowsHookEx(WH_CBT, HookCBTProc, NULL, ::GetCurrentThreadId());这段语句加在CWinApp::InitInstance()里,这样在程序启动时该钩子能够拦截到所有窗口的建立,有了窗口句柄,拦截消息就是件很轻松的事情了!不过在具体实现时会有些难度,包括滚动条的替换,窗口的边框及Caption的重绘,以及系统菜单的处理,还有Static控件的透明显示等等,不过只有想不到的,没有程序做不到的,祝你成功! 资料没有,我现在也在摸索中,但只要你对windows message比较熟的话,是没有太大问题的,事实上很多东西都要靠自己的,不然还叫什么程序员,都改名蓝领得了:) http://www.skin-studio.com ,皮肤工作室,给你最新的皮肤开发方法 求助:MFC中使用RegSetKeyValue(() 路径有问题么?还是有别的原因? 高手们来看看啊,文本的行距问题,求助! 求点击list control 的某一行的某个项目跳出下拉条的例子 有没有人有SICK LMS2**系列的激光传感器的数据接收程序? 繪圖的代碼應該放在哪裡? OnPaint? OnErasbkgnd? 還是自己的函數裡? vftable问题 CStdioFile GetLength()出现现致命错误 Holly to softdoctor! PtrList.GetNext连续使用总是出错 菜鸟问题,在线等待 请教数据采集中实时通信的问题。
改变控件和窗口的外观:
int SetWindowRgn(
HWND hWnd, // handle to window
HRGN hRgn, // handle to region
BOOL bRedraw // window redraw option
);
SetWindowsHookEx(WH_CBT, HookCBTProc, NULL, ::GetCurrentThreadId());
这段语句加在CWinApp::InitInstance()里,
这样在程序启动时该钩子能够拦截到所有窗口的建立,有了窗口句柄,拦截消息就是件很轻松的事情了!
不过在具体实现时会有些难度,包括滚动条的替换,窗口的边框及Caption的重绘,以及系统菜单的处理,还有Static控件的透明显示等等,不过只有想不到的,没有程序做不到的,祝你成功!