按钮

按钮(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_paintwm_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键。

 


你可能感兴趣的:(Win32,每日一练)