Windows APIを使用して基本的なGUIを作成していますが、問題が発生しました。それは私が(RGB(230,230,230))
を設定したカスタム背景色で開くメインウィンドウから始まります。次に、静的コントロールを使用してテキストを左上隅に表示します。スタティックコントロールの背景色はC++で
settingstext = CreateWindow("STATIC",
"SETTINGS",
SS_LEFT | WS_CHILD,
12,
20,
100,
20,
hwnd,
NULL,
proginstance,
NULL);
ShowWindow(settingstext, 1);
これは動作しますが、テキストが表示されたときに、私は、メインウィンドウに合わせて、それの背景を変更する方法が必要か、そうでなければ調和しないように、それはちょうど見えます。
私の質問それはどうやってやるの?私は現在、以下の方法を使用していますが、私は知りたかったのですが、システムカラーを変更せずに静的コントロールの機能の後で、バックグラウンドカラーを何らかの形で永久に設定する方法はありますか?コントロールであり、WM_CTLCOLORSTATIC
メッセージを送信するものではありません。私は、メッセージループの外でGetDC
関数とSetBkColor
関数を使って実験しましたが、何も動作しません。
case WM_CTLCOLORSTATIC:
{
HDC hdcStatic = (HDC) wParam;
SetTextColor(hdcStatic, RGB(0,0,0));
SetBkColor(hdcStatic, RGB(230,230,230));
return (INT_PTR)CreateSolidBrush(RGB(230,230,230));
}
私は、ウィンドウが再描画するたびに呼び出される必要がある機能と私のメッセージループを埋めるためにしたくない...
- ので、これをやりたいです。
- 変更はこの静的コントロールにのみ適用されます。
私は、少なくとも適切な方向に私を指して、提供される可能性のある任意のヘルプに感謝します、ありがとう。
'(HWND)lParam == setstext'をチェックすることで、' WM_CTLCOLORSTATIC'コードの効果を静的コントロールだけに制限することができます。 作成したすべてのブラシが決して削除されないという点で、あなたの例に問題があります。 –