2012-03-07 103 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