c++ - 更改子窗口的背景颜色 C++

标签 c++ winapi

我在主窗口中创建了一个子窗口,我希望将主窗口的颜色设置为红色,将子窗口的颜色设置为蓝色。我尝试了多种方法,但每次父窗口的颜色都与子窗口的颜色相同。下面是代码:

hWnd = CreateWindow(szWindowClass, szTitle, WS_OVERLAPPEDWINDOW,
  400, 170, 500, 500, NULL, NULL, hInstance, NULL);
brush = CreateSolidBrush(RGB(0, 0, 0));
box1 = CreateWindowEx(WS_EX_TOPMOST, szWindowClass, NULL, WS_CHILD | WS_VISIBLE | WS_BORDER,475, 475, 25, 25, hWnd, (HMENU)10001, hInstance, NULL);
SetClassLongPtr(box1, GCLP_HBRBACKGROUND,(LONG) brush );

brush = CreateSolidBrush(RGB(255, 0, 0));
SetClassLongPtr(hWnd, GCLP_HBRBACKGROUND,(LONG) brush );

最佳答案

SetClassLongPtr 更改整个窗口类的设置,因此该类中的所有窗口都会受到影响。由于您的两个窗口都使用相同的 szWindowClass,因此它们共享相同的类画笔。

尝试为子窗口创建一个单独的窗口类。或者,您可以处理 WM_ERASEBKGND自己绘制背景的消息。

关于c++ - 更改子窗口的背景颜色 C++,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9605422/

相关文章:

winapi - 绘制鼠标光标

c++ - 使用 SendInput API 的最佳实践

windows - win32 API SearchPath 失败

c++ - Eigen 库,具有稀疏矩阵的简单线性代数运算增加了它们的分配大小

c# - .net 中 C++ 的包装类?

c++ - 使用 lambda 或外部函数作为 spirit.qi 语义 Action

c++ - 尝试计算 2 个图像的 FFT(快速傅立叶变换)时发生访问冲突

c++ - 获取站点的 HTML

c++ - 跨平台崩溃处理程序

c++ - 无法创建 Win32 文本框来获取用户输入