WM_CTLCOLORSTATIC訊息

靜態控制項或唯讀或停用的編輯控制項,會在控制項即將繪製時,將 WM_CTLCOLORSTATIC 訊息傳送至其父視窗。 藉由回應此訊息,父視窗可以使用指定的裝置內容控制碼來設定靜態控制項的文字前景和背景色彩。

視窗會透過其 WindowProc 函式接收此訊息。

WM_CTLCOLORSTATIC

    WPARAM wParam;
    LPARAM lParam; 

參數

wParam

靜態控制視窗的裝置內容控制碼。

lParam

靜態控制項的控制碼。

傳回值

如果應用程式處理此訊息,則傳回值是系統用來繪製靜態控制項背景的筆刷控制碼。

備註

例如,如果應用程式傳回它建立的筆刷 (,則使用 CreateSolidBrushCreateBrushIndirect 函式) ,應用程式必須釋放筆刷。 例如,如果應用程式傳回系統筆刷 (, 則由 GetStockObjectGetSysColorBrush 函式所擷取的筆刷) ,則應用程式不需要釋放筆刷。

根據預設, DefWindowProc 函式會選取靜態控制項的預設系統色彩。

您可以設定停用編輯控制項的文字背景色彩,但無法設定文字前景色彩。 系統一律會使用COLOR_GRAYTEXT。

編輯不是唯讀或停用的控制項不會傳送 WM_CTLCOLORSTATIC 訊息;相反地,他們會傳送 WM_CTLCOLOREDIT 訊息。

執行緒之間永遠不會傳送 WM_CTLCOLORSTATIC 訊息;它只會在相同的執行緒內傳送。

如果對話方塊程式處理此訊息,它應該將所需的傳回值轉換成 INT_PTR ,並直接傳回值。 如果對話方塊程式傳回 FALSE,則會執行預設訊息處理。 系統會忽略 SetWindowLong 函式所設定的DWL_MSGRESULT值。

範例

下列 C++ 範例示範如何設定靜態控制項的文字前景和背景色彩,以回應 WM_CTLCOLORSTATIC 訊息。 變數 hbrBkgnd 是初始化為 Null 的靜態 HBRUSH 變數,並在呼叫 WM_CTLCOLORSTATIC之間儲存背景筆刷。 當不再需要筆刷時,筆刷必須透過對 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