单选按钮(Radio Button)和复选框(Check Box)是常见的Windows控件,用于从给出的选项中选择一项或多项,如下图所示:
单选按钮是互斥的,只能选择其中一项;而复选框没有限制,可以选择一项或多项。
单选按钮和复选框都是一种特殊的按钮,窗口类名称都是
如上图所示,单选按钮一般是分组的,一组单选按钮之间是互斥的,只能选择其中一个。一个窗口可以包含多组单选按钮。
要想为单选按钮分组,可以增加
下面的代码,将实现上图中所示的单选按钮和复选框:
单选按钮是互斥的,只能选择其中一项;而复选框没有限制,可以选择一项或多项。
单选按钮和复选框都是一种特殊的按钮,窗口类名称都是
button
,只不过增加了一些特殊的窗口样式罢了。单选按钮的样式为
BS_AUTORADIOBUTTON
,复选框的样式为
BS_AUTOCHECKBOX
。例如:
- //创建一个单选按钮
- CreateWindow(
- TEXT("button"), TEXT("单选按钮"),
- WS_CHILD | WS_VISIBLE | BS_LEFT | BS_AUTORADIOBUTTON/*单选按钮*/,
- 235, 40, 100, 26,
- hWnd, (HMENU)7, hInst, NULL
- );
- //创建一个复选框
- CreateWindow(
- TEXT("button"), TEXT("复选框"),
- WS_CHILD | WS_VISIBLE | BS_LEFT | BS_AUTOCHECKBOX/*复选框*/,
- 95, 70, 50, 26,
- hWnd, (HMENU)9, hInst, NULL
- );
如上图所示,单选按钮一般是分组的,一组单选按钮之间是互斥的,只能选择其中一个。一个窗口可以包含多组单选按钮。
要想为单选按钮分组,可以增加
WS_GROUP
样式。设置了 WS_GROUP 样式的单选框为一组中的首元素,随后的所有单选按钮都和它在同一组,直到下一个设置了 WS_GROUP 样式的单选按钮。
下面的代码,将实现上图中所示的单选按钮和复选框:
- //窗口过程
- LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam){
- PAINTSTRUCT ps;
- HDC hdc;
- static HFONT hFont; //逻辑字体
- //一组单选按钮
- static HWND labSex; //静态文本框--性别
- static HWND radioMale; //单选按钮--男
- static HWND radioFemale; //单选按钮--女
- //一组单选按钮
- static HWND labMarriage; //静态文本框--婚姻状况
- static HWND radioMarried; //单选按钮--已婚
- static HWND radioSingle;