预定义的按钮控件窗口类的窗口过程对按钮控制过程不处理的所有消息执行默认处理。当按钮控制过程对任何消息返回FALSE时,预定义的窗口过程将检查消息并执行下表中列出的默认操作。
信息 | 默认动作 |
BM_CLICK | 发送按钮WM_LBUTTONDOWN和WM_LBUTTONUP消息,并发送父窗口BN_CLICKED通知消息。 |
BM_GETCHECK | 返回按钮的检查状态。 |
BM_GETIMAGE | 返回与按钮相关联的位图或图标的句柄,如果按钮没有位图或图标,则返回NULL。 |
BM_GETSTATE | 返回按钮的当前检查状态,推送状态和对焦状态。 |
BM_SETCHECK | 设置所有样式的单选按钮和复选框的检查状态。如果单选按钮的【wParam中】参数大于零,则按钮将被赋予WS_TABSTOP样式。 |
BM_SETIMAGE | 将指定的位图或图标句柄与按钮相关联,并返回上一个位图或图标的句柄。 |
BM_SETSTATE | 设置按钮的推送状态。对于所有者绘制的按钮,如果按钮的状态已更改,则会向父窗口发送WM_DRAWITEM消息。 |
BM_SETSTYLE | 设置按钮样式。如果【lParam的】参数的低位字为TRUE,则重绘该按钮。 |
WM_CHAR | Checks a check box or automatic check box when the user presses the plus (+) or equal (=) keys. Unchecks a check box or automatic check box when the user presses the minus (-) key. |
WM_ENABLE | 涂上按钮。 |
WM_ERASEBKGND | 删除所有者绘制的按钮的背景。其他按钮的背景将作为WM_PAINT和WM_ENABLE处理的一部分被删除。 |
WM_GETDLGCODE | 返回指示默认按钮过程处理的输入类型的值,如下表所示。 |
按钮样式 | 返回 | |||
BS_AUTOCHECKBOX | ||||
DLGC_WANTCHARS | DLGC_BUTTON | ||||
BS_AUTORADIOBUTTON | ||||
DLGC_RADIOBUTTON | ||||
BS_CHECKBOX | ||||
DLGC_WANTCHARS | DLGC_BUTTON | ||||
BS_DEFPUSHBUTTON | ||||
DLGC_DEFPUSHBUTTON | ||||
BS_GROUPBOX | ||||
DLGC_STATIC | ||||
BS_PUSHBUTTON | ||||
DLGC_UNDEFPUSHBUTTON | ||||
BS_RADIOBUTTON | ||||
DLGC_RADIOBUTTON |
WM_GETFONT | 返回当前字体的句柄。 |
WM_KEYDOWN | 如果用户按下空格键,请按按钮。 |
WM_KEYUP | 释放除TAB键之外的所有情况的鼠标捕获。 |
WM_KILLFOCUS | 从按钮中移除焦点矩形。对于按钮和默认按钮,焦点矩形无效。如果按钮具有鼠标捕获功能,则捕获将被释放,该按钮未被单击,并且任何推送状态被删除。 |
WM_LBUTTONDBLCLK | 向父窗口发送BN_DBLCLK通知消息,以获取单选按钮和所有者绘制的按钮。对于其他按钮,双击将被处理为WM_LBUTTONDOWN消息。 |
WM_LBUTTONDOWN | 如果鼠标光标的位置在按钮的客户端矩形内,则突出显示按钮。 |
WM_LBUTTONUP | 如果按钮具有鼠标捕获,则释放鼠标捕获。 |
WM_MOUSEMOVE | 执行与WM_LBUTTONDOWN相同的操作,如果按钮具有鼠标捕获。否则,不执行任何操作。 |
WM_NCCREATE | 将任何BS_OWNERDRAW按钮变成BS_PUSHBUTTON按钮。 |
WM_NCHITTEST | 如果按钮控件是一个组框,则返回HTTRANSPARENT。 |
WM_PAINT | 根据其风格和当前状态绘制按钮。 |
WM_SETFOCUS | 在获取焦点的按钮上绘制一个焦点矩形。对于单选按钮和自动单选按钮,父窗口将发送BN_CLICKED通知消息。 |
WM_SETFONT | 设置一个新字体,并可选择更新窗口。 |
WM_SETTEXT | 设置按钮的文本。在组框的情况下,消息将覆盖预先存在的文本,然后使用新文本重新绘制组框。 |
WM_SYSKEYUP | 释放除TAB键之外的所有情况的鼠标捕获。 |
预定义的窗口过程将所有其他消息传递给DefWindowProc函数进行默认处理。