win32 单选按钮

#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样式的单选按钮。用上面的例子来说吧。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值