WM_CTLCOLORBTN消息

在绘制按钮之前, WM_CTLCOLORBTN 消息将发送到按钮的父窗口。 父窗口可以更改按钮的文本和背景色。 但是,只有所有者绘制的按钮响应处理此消息的父窗口。

WM_CTLCOLORBTN

    WPARAM wParam;
    LPARAM lParam; 

参数

wParam

一个 HDC ,指定按钮的显示上下文的句柄。

lParam

一个 HWND ,指定按钮的句柄。

返回值

如果应用程序处理此消息,则必须将句柄返回到画笔。 系统使用画笔绘制按钮的背景。

备注

如果应用程序返回它 (创建的画笔,例如,使用 CreateSolidBrushCreateBrushIndirect 函数) ,则应用程序必须释放画笔。 如果应用程序返回系统画笔 (例如,由 GetStockObjectGetSysColorBrush 函数) 检索的系统画笔,则应用程序不需要释放画笔。

默认情况下, DefWindowProc 函数选择按钮的默认系统颜色。 具有 BS_PUSHBUTTONBS_DEFPUSHBUTTONBS_PUSHLIKE样式的 按钮不使用返回的画笔。 具有这些样式的按钮始终使用默认系统颜色绘制。 绘图按钮需要几个不同的画笔-面、突出显示和阴影,但 WM_CTLCOLORBTN 消息只允许返回一个画笔。 若要为按钮提供自定义外观,请使用所有者绘制的按钮。 有关详细信息,请参阅 创建Owner-Drawn控件

永远不会在线程之间发送 WM_CTLCOLORBTN 消息。 它仅在一个线程内发送。

检查框或单选按钮的文本颜色应用于框或按钮、其检查标记和文本。 这些按钮的焦点矩形保持系统默认颜色 (通常为黑色) 。 组框的文本颜色适用于文本,但不适用于定义该框的行。 按钮的文本颜色仅适用于其焦点矩形;它不会影响文本的颜色。

如果对话框过程处理此消息,则应将所需的返回值强制转换为 INT_PTR 并直接返回值。 如果对话框过程返回 FALSE,则执行默认消息处理。 SetWindowLong 函数设置的DWL_MSGRESULT值将被忽略。

要求

要求
最低受支持的客户端
Windows Vista [仅限桌面应用]
最低受支持的服务器
Windows Server 2003 [仅限桌面应用]
标头
Winuser.h (包括 Windows.h)

另请参阅

其他资源

RealizePalette

SelectPalette