2012-03-07 14 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全体のウィンドウクラスの設定を変更するので、このクラスのすべてのウィンドウが影響を受けます。以下のコードです。両方のウィンドウは同じszWindowClassを使用しているため、同じクラスのブラシを共有します。

子ウィンドウ用に別のウィンドウクラスを作成してみてください。また、WM_ERASEBKGNDメッセージを処理して、自分で背景をペイントすることもできます。

+0

別のウィンドウクラスを作成しようとすると、その新しいクラスを使用するウィンドウは表示されません。 – user1255189

関連する問題