大佬教程收集整理的这篇文章主要介绍了xp主题控制的透明背景,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
WM_CTLCOLORBTN
message,就可以执行此操作.
我嘲笑了一个小型的演示应用程序,它可以并排比较两个不同的按钮.两者都是标准的Win32 BUTTON控件,但左边的控件处理WM_CTLCOLORBTN消息并指定与窗口背景颜色相同的画笔.您可以立即看到差异 – 按钮矩形周围的浅灰色(或者更确切地说,3D控件的默认颜色,COLOR_3DFACE)条纹消失了,按钮看起来与自定义背景颜色相比要好得多:
该效果也适用于启用了视觉主题的Windows XP – 这是同一个应用程序的屏幕截图:
我用来创建上述效果的代码几乎是非常简单的.将其添加到应用程序的主窗口过程(MainWndProC),如上所述.您无需触摸按钮.
HBRUSH hButtonBACkColor = NULL; LRESULT CALLBACK MainWndProc(HWND hWnd,UINT msg,WPARAM wParam,LPARAM lParam) { switch(msg) { case WM_CTLCOLORBTN: { if (!hButtonBACkColor) { // Create the brush,if it hasn't already been created. // (You can use any type of brush here; this is just an example.) hButtonBACkColor = GetSysColorBrush(COLOR_3DDKSHADOW); } return (LRESULT)hButtonBACkColor; } // ... } }
但是,请确保您指定的画笔表示与窗口背景颜色完全相同的颜色 – 透明画笔可能无法正常工作.同样,对于带图案的画笔(有人再使用它们吗?),需要将brush’s origin设置为与背景相匹配.
始终确保通过拨打DeleteObject
释放您创建的任何刷子!在C中,您可以通过使CBrush对象(或等效对象)成为对话框类的成员来实现此目的,以便自动销毁它.在C中,您需要处理WM_NCDESTROY消息并手动@L_262_25@画笔.
另请注意,您无需指定BS_OWNERDRAW
style以使此技巧起作用.上面的示例使用两个标准按钮控件,仅使用以下窗口样式标志创建:WS_CHILD,WS_VISIBLE和BS_PUSHBUTTON.
当然,如果你的设计比上面的例子复杂(例如,你的按钮重叠多个背景),你可能不得不采用所有者绘制路线.我认为这对于一个像你似乎描述的那个简单的任务来说太过分了.
以上是大佬教程为你收集整理的xp主题控制的透明背景全部内容,希望文章能够帮你解决xp主题控制的透明背景所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。