按钮(button)
按钮的创建:
同大多数控件一样,按钮使用CreateWindowEx来创建按钮,创建按钮使用的类名为botton.而lpWindowName参数指定了显示在按钮上的文字,dwStyle指定了按钮的类型,关于按钮的类型会后面在介绍.
例子:
CreateWindowsEx(NULL,
"button",
"按钮1",
WS_CHILD | WS_VISIBLE | BS_PUSHBUTTON ,
top,left,height,bottom,
hWinMain,
IDB_BUTTON1,
hInstance,
NULL);
按钮与应用程序的通信
同大多控件一样,按钮通过消息来通信,按钮向应用程序发送WM_COMMAND消息来通知程序,而应用程序则调用SendMessage向按钮发送消息.
按钮的类型:
1.复选框:
复选框(checkbox)是一种可同时选中多项的基础控件,isdlgbuttonchecked函数可以检查按钮的状态.复选框的风格 | 说明 |
标准(BS_CHECKBOX) | 有两种状态(选中和清除),不会自动改变状态 |
自动(BS_AUTOCHECKBOX) | 同上,但会自动改变状态 |
三态(BS_3STATE) | 有三种状态(选中、清除和未确定),不会自动改变状态 |
自动三态(BS_AUTO3STATE) | 同上,但会自动改变状态 |
2.分组框:
分组框可以在软件界面上分出不同的区域,每个区域可以有不同的功能,这样会让界面比较清爽.另外,如果使用单选框的话,不同组的单选框放到不同的分组框中,就不会引起单选框的混乱.分组框中只有一种风格,而且无法被选择.分组框的风格 | 说明 |
标准(BS_GROUPBOX) | 唯一的风格 |
3.按钮
就是我们经常见到标有"确定" "取消"的小方框控件,用户点击后会执行指定的事件.按钮没有状态.
按钮的风格 | 说明 |
标准(BS_PUSHBUTTON) | 通常用于启动操作 |
默认(BS_DEFPUSHBUTTON) | 默认按钮通常是用来表示最常见的或默认的选择 |
4.单选按钮
与复选框相反,在一组单选按钮选项中,只能选中其中一项.isdlgbuttonchecked函数可以检查按钮的状态.
单选按钮的风格 | 说明 |
标准(BS_RADIOBUTTON) | 不会自动改变状态 |
自动(BS_RADIOBUTTON) | 会自动改变状态 |
按钮的事件
按钮的事件在消息中获取,当按钮发生以下事件时,会向程序发送WM_COMMAND消息,其中,lParam是按钮的句柄,低位wParam是按钮的ID,高位wParam就是以下的通知码.
按钮的事件 | 说明 |
BCN_HOTITEMCHANGE | Windows XP中:鼠标进入或离开某个按钮的客户区。 |
BN_CLICKED | 用户单击一个按钮。 |
BN_DBLCLK或BN_DOUBLECLICKED | 用户双击一个按钮。 |
BN_DISABLE | 按钮被禁用。 |
BN_PUSHED或BN_HILITE | 用户按下一个按钮。 |
BN_KILLFOCUS | 按钮失去键盘焦点。 |
BN_PAINT | 按钮重绘。 |
BN_SETFOCUS | 按钮获得键盘焦点。 |
BN_UNPUSHED或BN_UNHILITE | 该按钮不再按。 |
按钮的方法
消息 | 默认动作 |
---|---|
bm_click | 发送按钮wm_lbuttondown和一个wm_lbuttonup消息,并向父窗口bn_clicked通知代码。 |
bm_getcheck | 返回按钮的选中状态。 |
bm_getimage | 返回一个手柄和按钮相关的位图或图标或空如果开关没有位图或图标。 |
bm_getstate | 返回当前状态检查,推动国家,和按钮的聚焦状态。 |
bm_setcheck | 设置状态检查所有款式的单选按钮和复选框。如果wParam参数大于零的单选按钮,按钮了ws_tabstop风格 |
bm_setimage | 将指定的位图或图标句柄与按钮,将返回一个句柄,以前的位图或图标。 |
bm_setstate | 设置的按钮状态。所有者绘制按钮,一个wm_drawitem消息发送给父窗口如果按钮的状态已更改。 |
bm_setstyle | 设置按钮的风格。如果在低位字指向参数真的按钮,重绘。 |
wm_char | 检查一个复选框或自动复选框,当用户按下加号(+)或相等(=)键。清除复选框或自动复选框,当用户按下减键(–)。 |
wm_enable | 把按钮。 |
wm_erasebkgnd | 删除所有者绘制按钮背景。其他按钮的背景部分的删除wm_paint和wm_enable处理。 |
wm_getdlgcode | 返回值显示的默认按钮的程序处理的输入类型,如下表所示。
按钮样式
退货
bs_autocheckbox
dlgc_wantchars | dlgc_button
bs_autoradiobutton
dlgc_radiobutton | dlgc_button
bs_checkbox
dlgc_wantchars | dlgc_button
bs_defpushbutton
dlgc_defpushbutton | dlgc_button
bs_groupbox
dlgc_static
bs_pushbutton
dlgc_undefpushbutton | dlgc_button
bs_radiobutton
dlgc_radiobutton | dlgc_button
|
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键。 |