Win32 学习笔记_创建按钮

按钮类 (BUTTON) 分为四种类型

1.普通的按钮(PushButton)

2. 单选按钮(RadioBox)

3. 复选框(CheckBox)

4. 分组框样式(GrouPBox)

下面代码演示了四种按钮样式的创建

// 创建按钮类
	// 1.普通按钮
	// 2.单选按钮
	// 3.复选按钮
	// 4.组框

	// 创建组框
	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);

图片效果:

Win32 学习笔记_创建按钮_第1张图片

按钮样式:

按钮风格样式
一直	描述
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,高字节为通知消息
LPARAM	为按钮的句柄


BN_CLICKED				// 按钮单击消息
BN_DBLCLK				// 双击消息
BN_DISABLE				// 禁用按钮消息
BN_DOUBLECLICKED		// 双击按钮消息
BN_HILITE				// 选择按钮消息
BN_KILLFOCUS			// 失去焦点消息
BN_PAINT				// 按钮自给消息
BN_PUSHED				// 按钮按下消息
BN_SETFOCUS				// 按钮获得焦点消息
BN_UNHILITE				// 按钮取消选择消息
BN_UNPUSHED			// 按钮弹起消息
BN_CUSTOMDRAW		// 按钮自定义绘制消息
WM_CTLCOLORBTN		// 更改按钮的文本的背景色(自绘按钮才有效)

你可能感兴趣的:(Win32,SDK,学习笔记,大数据,c++,学习)