我可以在注册课程时设置背景颜色,例如:
wincl.hbrBackground = CreateSolidBrush(RGB(202, 238, 255));
RegisterClassEx(&wincl);
但是我该如何对使用 CreateWindow 函数创建的任何窗口执行此操作呢?
就像我的主窗口上的按钮一样,我启用了视觉样式,并且我可以注意到按钮后面的 Windows 默认灰色背景颜色。
不要告诉我我必须为所有控件上的窗口过程设置 SetWindowLong 并拦截 WM_PAINT :(
所有窗口控件都会向其父控件发送一条消息,以获取用于填充其背景的画笔。
假设您在某处保存了画笔句柄的副本,则可以在 WindowProc 或 DialogProc 中执行以下操作,以确保使用正确的背景画笔绘制所有内容。
case WM_CTLCOLORSTATIC:
case WM_CTLCOLORBTN:
HDC hdc;
HWND hwndCtl;
POINT pt;
hdc = (HDC)wParam;
hwndCtl = (HWND)lParam;
pt.x = 0;
pt.y = 0;
MapWindowPoints(hwndCtl,_hwnd,&pt,1);
x = -pt.x;
y = -pt.y;
SetBrushOrgEx(hdc,x,y,NULL);
return (INT_PTR)_skinBrush;
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)