次の方法で共有


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 [デスクトップ アプリのみ]
ヘッダー
Winuser.h (Windows.h を含む)

関連項目

参照

WM_CTLCOLORBTN

WM_CTLCOLOREDIT

WM_CTLCOLORLISTBOX

WM_CTLCOLORSCROLLBAR

その他のリソース

DefWindowProc

RealizePalette

SelectPalette

WM_CTLCOLORDLG