WM_CTLCOLORSTATIC メッセージ
静的コントロール、または読み取り専用または無効になっている編集コントロールは、コントロールが描画されるときに、その親ウィンドウに WM_CTLCOLORSTATIC メッセージを送信します。 このメッセージに応答することで、親ウィンドウは、指定されたデバイス コンテキスト ハンドルを使用して、静的コントロールのテキストの前景色と背景色を設定できます。
ウィンドウは、 WindowProc 関数を介してこのメッセージを受信します。
WM_CTLCOLORSTATIC
WPARAM wParam;
LPARAM lParam;
パラメーター
-
wParam
-
静的コントロール ウィンドウのデバイス コンテキストへのハンドル。
-
lParam
-
静的コントロールへのハンドル。
戻り値
アプリケーションがこのメッセージを処理する場合、戻り値は、システムが静的コントロールの背景を描画するために使用するブラシへのハンドルです。
解説
アプリケーションが作成したブラシを返す場合 (たとえば、 CreateSolidBrush または CreateBrushIndirect 関数を使用)、アプリケーションはブラシを解放する必要があります。 アプリケーションがシステム ブラシ ( GetStockObject または GetSysColorBrush 関数によって取得されたブラシなど) を返す場合、アプリケーションはブラシを解放する必要はありません。
既定では、 DefWindowProc 関数は静的コントロールの既定のシステム 色を選択します。
無効になっている編集コントロールのテキストの背景色を設定することはできますが、テキストの前景色を設定することはできません。 システムは常にCOLOR_GRAYTEXTを使用します。
読み取り専用または無効ではないコントロールを編集すると、 WM_CTLCOLORSTATIC メッセージは送信されません。代わりに、 WM_CTLCOLOREDIT メッセージを送信します。
WM_CTLCOLORSTATIC メッセージはスレッド間で送信されません。同じスレッド内でのみ送信されます。
ダイアログ ボックス プロシージャがこのメッセージを処理する場合は、目的の戻り値を INT_PTR にキャストし、値を直接返す必要があります。 ダイアログ ボックス プロシージャが FALSE を返す場合は、既定のメッセージ処理が実行されます。 SetWindowLong 関数によって設定されたDWL_MSGRESULT値は無視されます。
例
次の C++ の例は、 WM_CTLCOLORSTATIC メッセージに応答して静的コントロールのテキストの前景色と背景色を設定する方法を示しています。 変数はhbrBkgnd、NULL に初期化され、WM_CTLCOLORSTATICの呼び出しの間にバックグラウンド ブラシを格納する静的 HBRUSH 変数です。 ブラシは、不要になった場合 (通常、関連付けられているダイアログ ボックスが破棄されるときに) DeleteObject 関数の呼び出しによって破棄される必要があります。
case WM_CTLCOLORSTATIC:
{
HDC hdcStatic = (HDC) wParam;
SetTextColor(hdcStatic, RGB(255,255,255));
SetBkColor(hdcStatic, RGB(0,0,0));
if (hbrBkgnd == NULL)
{
hbrBkgnd = CreateSolidBrush(RGB(0,0,0));
}
return (INT_PTR)hbrBkgnd;
}
要件
| 要件 | 値 |
|---|---|
| サポートされている最小のクライアント |
Windows Vista [デスクトップ アプリのみ] |
| サポートされている最小のサーバー |
Windows Server 2003 [デスクトップ アプリのみ] |
| Header |
|