单选按钮Radio Button和复选框Check Box的使用

来源:互联网 发布:软件定义网络sdn 编辑:程序博客网 时间:2024/05/20 23:33

以下都是个人理解,如有错误欢迎指出
单选框使用过程
1、连续拖拽单选框到对话框界面作为一组,这样单选框的ID是连续的
2、将第一个单选框(也就是ID值最小的那个)属性Group设置为True,并且添加成员变量
3、初始化单选框的状态,应该保证一组中有且只有一个单选框被选中
4、处理单选框的选择结果,获取这组的单选框的状态

复选框使用过程
1、复选框不用分租,比单选框简单,拖拽一个单选框到对话框界面,并为它添加成员变量
2、设置初始状态
3、处理复选框的选择结果,获取复选框的状态

以下是注意事项的初始化,获取结果的实现方法
一、单选框Radio Button
1、分组

a、要求一组单选按钮的标识符ID要是连续递增的。

b、在一个对话框上可以有几组单选按钮,每组按钮中只能有一个按钮被选中(变量初始化的时候)

c、无论如何,在变量初始化的时候,一组单选按钮中不能有两个或两个以上的按钮被同时选中(可以在代码中实现的),否则在程序获取选中按钮状态时,程序会崩溃。

d、分组标志:在每组的第一个单选按钮ID(ID的值在组中最小)属性设置为Group,否则会使一部分按钮错误地分到其他组或者失效(可选中,但值为-1)

e、只有属性为Group的按钮可以添加变量,否则程序无法运行

2、初始化(对话框生成时单选按钮的默认状态)

a、单选按钮没有成员变量时,初始化时,按钮状态是没有按钮处于被选中状态,可以用方法c、d初始化。

b、单选按钮有成员变量m_radio时,对话框会根据变量的值初始化单选按钮状态
:假设此时有3个按钮,初始化变量m_radio = 0表示对话框默认第一个按钮被选中状态,负数或者大于2的整数都会使所有按钮为未选中状态
:但都未选中时,获取m_radio的值,m_radio 为-1。

c、使用CheckRadioButton()函数(个人感觉有时不太好使)
BOOL CheckRadioButton(
int nlDFirstButton, //指定组中第1个单选按钮的标识符ID
int nlDLastBUtton,//指定组中最后一个单选按钮的标识符
int nlDCheckButton//要默认选中的那个单选按钮的标识符
);

d、
((CButton*)GetDlgItem(IDC_RADIO6))->SetCheck(1);
可以使控件ID为IDC_RADIO6的按钮为选中状态。
:这种方法不考虑其他方法是否将其他单选按钮已选中,所以会造成多个单选按钮同时选中的情况,是不允许的!所以要将其他按钮全部SetCheck(0);

3、获取状态
a、IsDlgButtonChecked(nID);可以获取控件nID的按钮是否为选中状态
返回值:(只列两个值)
BST_CHECKED(1)为选中状态
BST_UNCHECKED(0)为未选中状态

b、GetCheckedRadioButton();
int GetCheckedRadioButton(
int nIDFirstButton, //指定组中第1个单选按钮的标识符ID
int nIDLastButton//指定组中最后一个单选按钮的标识符
);
返回值: 当有被选中的单选框时返回被选中的单选框的ID,如果所给的组中都没被选中则返回0

c、UpdateData(),获取成员变量的值也可以获得单选框状态

二、复选框Check Box
1、初始化
选中状态
((CButton*)GetDlgItem(IDC_CHECK1))->SetCheck(1);
未选中状态
((CButton*)GetDlgItem(IDC_CHECK1))->SetCheck(0);

2、获取状态
a、int state = ((CButton*)GetDlgItem(IDC_CHECK1))->GetCheck();

b、IsDlgButtonChecked(nID);同Radio Button使用方法一样

0 0