gpt4 book ai didi

C++ win32 : how to set back color of a window?

转载 作者:太空宇宙 更新时间:2023-11-04 03:07:24 29 4
gpt4 key购买 nike

我可以在注册类(class)时设置背景颜色,例如:

wincl.hbrBackground = CreateSolidBrush(RGB(202, 238, 255));
RegisterClassEx(&wincl);

但是我如何对使用 CreateWindow 函数创建的任何窗口执行此操作?就像我主窗口上的按钮一样,我启用了视觉样式,并且我可以注意到按钮后面的窗口默认灰色背景色。

别告诉我我必须为我的所有控件上的窗口过程设置 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;

关于C++ win32 : how to set back color of a window?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3301053/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com