#include <CommCtrl.h> //包含头文件
// 导入静态库
#pragma comment(lib, "Comctl32.lib")
// 开启视觉效果 Copy from MSDN
#pragma comment(linker,"\"/manifestdependency:type='win32' \
name='Microsoft.Windows.Common-Controls' version='6.0.0.0' \
processorArchitecture='*' publicKeyToken='6595b64144ccf1df' language='*'\"")
MSDN文档链接:
https://msdn.microsoft.com/en-US/library/bb773175(v=vs.85).aspx
先列出需要用到的控件ID
#define IDC_RADBTN1 50001
#define IDC_RADBTN2 50002
#define IDC_RADBTN3 50003
#define IDC_RADBTNBLUE 51001
#define IDC_RADBTNRED 51002
#define IDC_RADBTNGREEN 51003
创建第一个单选
case WM_CREATE:
{
CreateWindow(L"Button", L"哈哈",
BS_RADIOBUTTON | WS_CHILD | WS_VISIBLE,
10, 10, 150, 28,
hWnd, (HMENU)IDC_RADBTN1,
(HINSTANCE)GetWindowLongPtr(hWnd, GWLP_HINSTANCE),
NULL);
}
return 0;
创建两组看看
// 获取当前实例句柄
HINSTANCE hthisapp = (HINSTANCE)GetWindowLongPtr(hWnd, GWLP_HINSTANCE);
// 纵坐标,控件将以此作为基准,
// 排列时依次增加
int yLoc = 0;
// 用来显示文本
yLoc += 10;
CreateWindow(L"Static", L"嗯嗯:",
SS_SIMPLE | WS_CHILD | WS_VISIBLE,
10, yLoc, 160, 18,
hWnd, NULL,
hthisapp,
NULL);
// 第一组单选按钮
yLoc += 22;
CreateWindow(L"Button", L"呵呵",
WS_CHILD | WS_VISIBLE | BS_AUTORADIOBUTTON | WS_GROUP,
12, yLoc, 60, 16,
hWnd,
(HMENU)IDC_RADBTN1,
hthisapp, NULL);
yLoc += 20;
CreateWindow(L"Button", L"哈哈",
WS_CHILD | WS_VISIBLE | BS_AUTORADIOBUTTON,
12, yLoc, 60, 16,
hWnd, (HMENU)IDC_RADBTN2, hthisapp, NULL);
yLoc += 20;
CreateWindow(L"Button", L"额额", WS_CHILD | WS_VISIBLE | BS_AUTORADIOBUTTON,
12, yLoc, 60, 16, hWnd, (HMENU)IDC_RADBTN3, hthisapp, NULL);
// 显示文本
yLoc += 38;
CreateWindow(L"Static", L"你喜欢哪一种颜色?",
WS_CHILD | WS_VISIBLE | SS_SIMPLE,
10, yLoc, 150, 18, hWnd, NULL, hthisapp, NULL);
//第二组单选按钮
yLoc += 22;
CreateWindow(L"Button", L"蓝色", WS_CHILD | WS_VISIBLE | BS_AUTORADIOBUTTON | WS_GROUP,
12, yLoc, 60, 16, hWnd, (HMENU)IDC_RADBTNBLUE, hthisapp, NULL);
yLoc += 20;
CreateWindow(L"Button", L"红色", WS_CHILD | WS_VISIBLE | BS_AUTORADIOBUTTON,
12, yLoc, 60, 16, hWnd, (HMENU)IDC_RADBTNRED, hthisapp, NULL);
yLoc += 20;
CreateWindow(L"Button", L"绿色", WS_CHILD | WS_VISIBLE | BS_AUTORADIOBUTTON,
12, yLoc, 60, 16, hWnd, (HMENU)IDC_RADBTNGREEN, hthisapp, NULL);
其实是这样的,既然单选按钮是单选的,那么,任何一个单选按钮都与其他的单选按钮是互斥的关系。所以,在同一个容器(本例是同一个窗口)中就需要把单选按钮进行分组。
凡是设置了WS_GROUP的单选框做为一组中的首元素,随后的所有单选按钮都和它在同一组,直到下一个设置了WS_GROUP样式的单选按钮。用上面的例子来说吧。