按钮控件根据其风格属性可派生出:命令按钮(Pushbutton)、检查框(Check Box)、单选按钮(Radio Button)、组框(Group Box)和自绘式按钮(Owner-draw Button)。
命令按钮是指可以响应鼠标点击的小矩形子窗口。命令按钮的作用是对用户的鼠标单击作出反应并触发相应的事件,在按钮中既可以显示正文,也可以显示位图。
选择框控件可作为一种选择标记,可以有选中、不选中和不确定三种状态。当一个选择框处于选择状态时,在小方框内会出现一个“√”。
单选按钮控件一般都是成组出现的,具有互斥的性质,即同组单选按钮中只能有一个是被选中的。当单选按钮处于选择状态时,会在圆圈中显示一个黑色实心圆。
组框用来将相关的一些控件聚成一组。
自绘式按钮是指由程序而不是系统负责重绘的按钮。
此外,选择框、单选框还有一种不确定状态,这时检查框呈灰色显示,不能接受用户的输入,以表明控件是无效的或无意义的。
常数 | 说明 |
BS_RADIOBUTTON | 创建一个单选框控件,其标题文本被显示在选择框右侧。该控件允许程序设定为选中和未选两种状态。当一个控件被设定成选中,在同一组(或同一父窗口)范围内的其它单选框控件将全部设设定成未选状态,类似收音机的波段选择开关。 |
BS_AUTORADIOBUTTON | 创建一个自动单选框控件。该控件允许程序设定为选中和未选两种状态。当一个控件被选中,在同一组(或同一父窗口)范围内的其它单选按钮控件将全部设定成未选状态,类似收音机的波段选择开关,同时当用户鼠标单击该控件时,其状态自动设定成选中状态。 |
BS_CHECKBOX | 创建一个选择框控件,其标题文本被显示在选择框右侧。该控件允许程序设定为选中和未选两种状态。 |
BS_AUTOCHECKBOX | 创建一个自动选择框控件,该控件允许程序设定为选中和未选两种状态,同时当用户鼠标单击该控件时,其状态自动在选中和未选状态间切换。 |
BS_3STATE | 创建一个三态选择框控件,其标题文本被显示在选择框右侧。该控件允许程序设定为选中、未选和不定(变灰)三种状态。 |
BS_AUTO3STATE | 创建一个自动三态选择框控件,该控件允许程序设定为选中、未选和不定(变灰)三种状态,同时当用户鼠标单击该控件时,其状态自动在选中、不定(变灰)、未选三种状态间切换。 |
BS_PUSHBUTTON | 创建一个命令按钮控件,这也是本类的默认值。 |
BS_DEFPUSHBUTTON | 创建一个默认命令按钮控件,与普通命令按钮不同的是:该按钮被设置成默认按钮,按钮绘成黑色边框,如果按钮在一个对话框,则用户按下键盘的“ENTER”键等效于按钮被按下。通常被应用在按键快速输入。 |
BS_PUSHLIKE | 本风格属性与选择框或单选框配合,使它们的显示外观看上去象个普通按钮,利用显示控件为上浮和下沉来分别表示选中和未选状态。 |
BS_GROUPBOX | 创建一个组框控件,用3D下凹线条绘制一个矩形,其标题文本被显示在选择框左上角。 |
BS_LEFTTEXT BS_RIGHTBUTTON | 这两个常数相等。与选择框或单选框配合,使其标题文字显示在左边。 |
BS_OWNERDRAW | 创建一个自绘式按钮。创建控件时向父窗口发送WM_MEASUREITEM消息,按钮需要重绘时向父窗口发送WM_DRAWITEM消息,本风格属性不能与其它风格联合使用。 |
BS_USERBUTTON | 本风格属性32位程序已经停止使用了。 |
BS_BITMAP | 指定控件显示位图。 |
BS_ICON | 指定控件显示图标。 |
BS_TEXT | 指定控件显示文本。 |
BS_TOP | 文本显示垂直居顶。 |
BS_VCENTER | 文本显示垂直居中。 |
BS_BOTTOM | 文本显示垂直居底。 |
BS_LEFT | 文本显示水平居左。 |
BS_CENTER | 文本显示水平居中。 |
BS_RIGHT | 文本显示水平居右。 |
BS_MULTILINE | 指定文本长度太长时可以自动进行换行处理。 |
BS_NOTIFY | 指定当用户双击控件,失去焦点和得到焦点时分别向父窗口发送BN_DBLCLK、BN_KILLFOCUS或BN_SETFOCUS通知消息 ,设定本风格常数将禁止用户单击消息。 |
当用户在按钮控件上进行各种操作时,其父窗口将收到WM_COMMAND通知消息,同时wParam的低16位带控件的ID。lParam带控件句柄(hWnd),wParam的高16位带有如下表的消息代码。
BN_CLICKED | 用户单击按钮。 |
BN_DBLCLK | 用户双击按钮。 |
BN_DISABLE | 按钮被设成禁止状态。 |
BN_PUSHED | 用户按下按钮。 |
BN_KILLFOCUS | 按钮失去键盘输入焦点。 |
BN_PAINT | 按钮将被重绘。 |
BN_SETFOCUS | 按钮得到键盘输入焦点。 |
BN_UNPUSHED | 用户释放按钮。 |
应用程序可以通过调用SendMessage向控件发送如下消息来设定和查询控件各种参数。
uMsg | wParam | lParam | 说明 |
BM_GETCHECK | 0 | 0 | 取选择框和单选框的当前选择状态。 |
BM_SETCHECK | 状态 | 0 | 设定选择框和单选框的当前选择状态,wParam可指定为BST_CHECKED(选中)、BST_UNCHECKED(不选)或BST_INDETERMINATE(不定)三种状态。 |
BM_SETSTATE | 状态 | 0 | 改变按钮的高亮度状态,wParam可指定为TRUE(设置高亮度)或FALSE(取消高亮度)。 |
BM_SETSTYLE | 风格 | TRUE或FALSE | 改变按钮的各种风格,wParam指定为上述的“BS_”开头的各种风格,lParam为TRUE则重绘控件。 |
BM_SETIMAGE | 图片类型 | 句柄 | 设置图形按钮的图像句柄,wParam指定为IMAGE_BITMAP(位图)或IMAGE_ICON(图标) |
BM_GETIMAGE | 图片类型 | 0 | 取图形按钮的图像句柄,wParam指定为IMAGE_BITMAP(位图)或IMAGE_ICON(图标) |
另外,应用程序可以向其父窗口发送DM_GETDEFID来获取默认控件的ID,也可以发送DM_SETDEFID并在wParam中指控件的ID来设置默认控件的ID。