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