分组后,同组的选择状态是互斥的,从而达到控件单选的目的。
组的划分
radio button的组是靠控件的GROUP属性与TAB序号判断的。
自TAB序号依次向下,从GROUP属性设置为true的开始,直到下一个GROUP属性设置为true的radio控件都是一组。
GROUP属性与TAB顺序
属性的设置可通过资源视图中通过VC或VS的图形界面修改,
TAB顺序也可在通过 Layout -> tab order 或快捷键Ctrl + D 通过鼠标点击设置。
但其实质是.rc文件中的属性与顺序
IDD_RADIOBUTTONTEST_DIALOG DIALOGEX 0, 0, 320, 200
STYLE DS_SETFONT | DS_FIXEDSYS | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU | WS_THICKFRAME
EXSTYLE WS_EX_APPWINDOW
CAPTION "RadioButtonTest"
FONT 9, "MS Shell Dlg", 0, 0, 0x1
BEGIN
CONTROL "Radio1",IDC_RADIO1,"Button",BS_AUTORADIOBUTTON | WS_GROUP,36,24,37,10
CONTROL "Radio2",IDC_RADIO2,"Button",BS_AUTORADIOBUTTON,36,49,37,10
CONTROL "Radio3",IDC_RADIO3,"Button",BS_AUTORADIOBUTTON,36,74,37,10
CONTROL "Radio5",IDC_RADIO5,"Button",BS_AUTORADIOBUTTON,96,49,37,10
CONTROL "Radio6",IDC_RADIO6,"Button",BS_AUTORADIOBUTTON | WS_GROUP,96,74,37,10
CONTROL "Radio4",IDC_RADIO4,"Button",BS_AUTORADIOBUTTON,96,24,37,10
END
以这段.rc文件为例,有6个radio控件,BEGIN到END间的顺序便对应tab order,WS_GROUP对应BUTTON控件的GROUP属性,按照上述的分组原则,此时1235为一组,64为一组。
P.S. 为什么是MFC呢……如果非要个原因 那就是生活所迫吧