欢迎光临散文网 会员登陆 & 注册

Win32 程序学习笔记_创建按钮(Button)

2022-07-15 01:23 作者:bili_98931215023  | 我要投稿

按钮类(Button)分为四种样式

1。组框样式(GroupBox)

2。单选按钮样式(RadioBox)

3。复选框样式(CheckBox)

4。普通按钮样式(Pushbutton)

创建代码:

// 创建组框

         HWND hGroupWnd = CreateWindowEx(0, TEXT("BUTTON"), TEXT("组框1"), WS_VISIBLE | WS_CHILD | BS_GROUPBOX,

                   10, 10, 300, 200, hWnd, (HMENU)1001, hInstance, 0);

 

         // 创建下压按钮

         HWND hBtnWnd1 = CreateWindowEx(0, TEXT("BUTTON"), TEXT("Button1"), WS_VISIBLE | WS_CHILD | BS_PUSHBUTTON,

                   40, 30, 100, 30, hWnd, (HMENU)1002, hInstance, 0);

         HWND hBtnWnd2 = CreateWindowEx(0, TEXT("BUTTON"), TEXT("Button2"), WS_VISIBLE | WS_CHILD | BS_PUSHBUTTON,

                   150, 30, 100, 30, hWnd, (HMENU)1003, hInstance, 0);

 

         // 创建一组单选按钮(WS_GROUP设置分组,放在一组的第一个单选按钮上)

         HWND hRadioWnd1 = CreateWindowEx(0, TEXT("BUTTON"), TEXT("RadioBox1"), WS_VISIBLE | WS_CHILD |WS_GROUP| BS_AUTORADIOBUTTON,

                   40, 70, 100, 30, hWnd, (HMENU)1004, hInstance, 0);

         HWND hRadioWnd2 = CreateWindowEx(0, TEXT("BUTTON"), TEXT("RadioBox2"), WS_VISIBLE | WS_CHILD | BS_AUTORADIOBUTTON,

                   150, 70, 100, 30, hWnd, (HMENU)1005, hInstance, 0);

 

         // 创建另一组单选按钮

         HWND hRadioWnd3 = CreateWindowEx(0, TEXT("BUTTON"), TEXT("RadioBox1"), WS_VISIBLE | WS_CHILD | WS_GROUP | BS_AUTORADIOBUTTON,

                   40, 110, 100, 30, hWnd, (HMENU)1005, hInstance, 0);

         HWND hRadioWnd4 = CreateWindowEx(0, TEXT("BUTTON"), TEXT("RadioBox2"), WS_VISIBLE | WS_CHILD | BS_AUTORADIOBUTTON,

                   150, 110, 100, 30, hWnd, (HMENU)1006, hInstance, 0);

 

         // 创建复选框按钮

         HWND hCheckWnd1 = CreateWindowEx(0, TEXT("BUTTON"), TEXT("CheckBox1"), WS_VISIBLE | WS_CHILD | BS_AUTOCHECKBOX,

                   40, 150, 100, 30, hWnd, (HMENU)1007, hInstance, 0);

         HWND hwndCheck2 = CreateWindowEx(0, TEXT("BUTTON"), TEXT("CheckBox2"), WS_VISIBLE | WS_CHILD | BS_AUTOCHECKBOX,

                   150, 150, 100, 30, hWnd, (HMENU)1008, hInstance, 0);

效果图片:

按钮风格样式


BS_3STATE

创建与复选框相同的按钮,但该框可以是灰色的,也可以选中或清除。   使用灰色状态显示未确定复选框的状态。

BS_AUTO3STATE

创建与三状态复选框相同的按钮,但当用户选择该按钮时,该框会更改其状态。   状态通过检查、不确定和清除循环。

BS_AUTOCHECKBOX

创建与复选框相同的按钮,但每次用户选中复选框时,复选框状态都会自动切换并清除。

BS_AUTORADIOBUTTON

创建与单选按钮相同的按钮,但当用户选择该按钮时,系统会自动将按钮的检查状态设置为已选中,并自动设置同一组中所有其他按钮的检查状态以清除。

BS_BITMAP

指定按钮显示位图。   请参阅“备注”部分,了解其与BS_ICON的交互。

BS_BOTTOM

将文本置于按钮矩形底部。

BS_CENTER

在按钮矩形中水平居中文本。

BS_CHECKBOX

创建包含文本的小型空复选框。   默认情况下,该文本显示在复选框右侧。   若要显示复选框左侧的文本,请将此标志与BS_LEFTTEXT样式 (或等效的BS_RIGHTBUTTON样式) 组合在一起。

BS_COMMANDLINK

创建一个命令链接按钮,该按钮的行为类似于BS_PUSHBUTTON样式按钮,但命令链接按钮的左侧有一个绿色箭头,指向按钮文本。 可以通过将BCM_SETNOTE消息发送到按钮来设置按钮文本的标题。

BS_DEFCOMMANDLINK

创建类似于BS_PUSHBUTTON样式按钮的命令链接按钮。 如果按钮位于对话框中,用户可以通过按   Enter 键来选择命令链接按钮,即使命令链接按钮没有输入焦点也是如此。   此样式可用于让用户快速选择最有可能 (默认) 选项。

BS_DEFPUSHBUTTON

创建一个类似于BS_PUSHBUTTON样式按钮的推送按钮,但外观明显。 如果按钮位于对话框中,则用户可以通过按 Enter 键来选择该按钮,即使该按钮没有输入焦点也是如此。 此样式可用于让用户快速选择最有可能 (默认) 选项。

BS_DEFSPLITBUTTON

创建一个类似于BS_PUSHBUTTON样式按钮的拆分按钮,但也具有独特的外观。 如果拆分按钮位于对话框中,则用户可以按 Enter 键选择拆分按钮,即使拆分按钮没有输入焦点也是如此。 此样式可用于让用户快速选择最有可能 (默认) 选项。

BS_GROUPBOX

创建一个矩形,在该矩形中可以分组其他控件。   与此样式关联的任何文本都显示在矩形的左上角。

BS_ICON

指定按钮显示图标。   请参阅“备注”部分,了解其与BS_BITMAP的交互。

BS_FLAT

指定按钮为二维;它不使用默认底纹来创建三维图像。

BS_LEFT

左对齐按钮矩形中的文本。   但是,如果按钮是没有BS_RIGHTBUTTON样式的复选框或单选按钮,则文本框或单选按钮右侧的文本左对齐。

BS_LEFTTEXT

与单选按钮或复选框样式结合使用时,将文本放在单选按钮或复选框的左侧。   与BS_RIGHTBUTTON样式相同。

BS_MULTILINE

如果文本字符串太长,无法容纳按钮矩形中的单个行,则将按钮文本包装为多行。

BS_NOTIFY

允许按钮将 BN_KILLFOCUS 和 BN_SETFOCUS 通知代码发送到其父窗口。
  请注意,无论按钮是否具有此样式,按钮都会发送 BN_CLICKED 通知代码。 若要获取 BN_DBLCLK 通知代码,按钮必须具有BS_RADIOBUTTON或BS_OWNERDRAW样式。

BS_OWNERDRAW

创建所有者绘制的按钮。   当按钮的视觉方面发生更改时,所有者窗口会收到 WM_DRAWITEM 消息。 请勿将BS_OWNERDRAW样式与其他任何按钮样式组合在一起。

BS_PUSHBUTTON

创建一个推送按钮,当用户选择该按钮时,会将 WM_COMMAND 消息发布到所有者窗口。

BS_PUSHLIKE

使按钮 ((如复选框、三态复选框或单选按钮)) 外观并像按下按钮一样。   按钮在未推送或检查时显示,在按下或选中按钮时会引发。

BS_RADIOBUTTON

使用文本创建一个小圆圈。   默认情况下,文本显示在圆的右侧。   若要显示圆左侧的文本,请将此标志与BS_LEFTTEXT样式 (或等效的BS_RIGHTBUTTON样式) 组合在一起。   对相关组使用单选按钮,但相互排斥的选择。

BS_RIGHT

右对齐按钮矩形中的文本。   但是,如果按钮是没有BS_RIGHTBUTTON样式的复选框或单选按钮,则文本框或单选按钮右侧的文本右对齐。

BS_RIGHTBUTTON

将单选按钮的圆或复选框的正方形放在按钮矩形的右侧。   与BS_LEFTTEXT样式相同。

BS_SPLITBUTTON

创建拆分按钮。   拆分按钮具有下拉箭头。

BS_TEXT

指定按钮显示文本。

BS_TOP

将文本置于按钮矩形的顶部。

BS_TYPEMASK

请勿使用此样式。   在 BS_* 样式位上使用 OR 运算符产生的复合样式位。   它可用于从给定位掩码屏蔽有效的BS_* 位。 请注意,这是过期的,并且未正确包含所有有效样式。 因此,不应使用此样式。

BS_USERBUTTON

已过时,但提供与 16 位版本的Windows兼容。 应用程序应改用BS_OWNERDRAW。

BS_VCENTER

将文本置于按钮矩形的中间 (垂直) 。


按钮常用消息:

BM_CLICK  模拟按钮点击  WPARAM=0,LPARAM=0;

BM_GETCHECK        获取单选按钮或复选框的选中状态     WPARAM=0,LPARAM=0

BM_GETIMAGE       获得按钮的图像(图标或位图)句柄,     WPARAM=0,LPARAM=0

BM_GETSTATE          获得单选按钮或复选框状态,     WPARAM=0,LPARAM=0;

BM_SETCHECK         设置单选按钮或复选框的选中状态,        

                                     WPARAM=BST_CHECKED,BST_INDETERMINATE,BST_UNCHECKED

                                     LPARAM=0;

BM_SETDONTCLICK  在单选按钮上设置一个标志,接收焦点时生成BN_CLICKED消息

                                     WPARAM=BOOL,     LPARAM=0;

BM_SETIMAGE        设置新图像(图标或位图)        

WPARAM=IMAGE_BITMAP,IMAGE_ICON

                                     LPARAM=HBITMAP,HICON

BM_SETSTATE           设置按钮的选中状态           WPARAM=BOOL, LPARAM=0;

BM_SETSTYLE           设置按钮样式                   WPARAM=BS_..(按钮样式)  ,LPARAM=BOOL,(是否重绘)

按钮通知消息

点击按钮时向父窗口发送WM_COMMAND消息,

wParam   的低字节指定了子窗口的ID号,高字节指定事件通知码BN_CLICKED,

lParam     指定了子窗口句柄


Win32 程序学习笔记_创建按钮(Button)的评论 (共 条)

分享到微博请遵守国家法律