2012-03-07 97 views
2

我在主窗口内创建了一个子窗口,我希望将主窗口的颜色设置为红色,并将子窗口的颜色设置为蓝色。我已经尝试了很多方法,但每次父窗口变成与子窗口相同的颜色时。下面是代码:更改子窗口的背景颜色C++

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); 

回答

2

SetClassLongPtr改变整个窗口类的设定,所以在这个类的所有窗口都会受到影响。由于你的Windows使用相同的szWindowClass,它们共享相同的类刷。

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

+0

当我尝试创建一个单独的窗口类时,使用新类的窗口不显示。 – user1255189 2012-03-07 16:59:15