Getdlgitem(你要的那个单选的id)->SetCheck(true);
//呵呵,以下为我从网上整理的资料,留着有用。
调用 CButton的成员函数GetCheck返回单选钮的选中状态。该函数的函数原型是
int GetCheck( ) const;
返回值可以是0、1、2,分别代表按钮处于未选中状态、选中状态或中间状态(对三态复选框而言)。
调用类CWnd的成员函数GetCheckedRadioButton返回同一组单选钮中哪一个被选中。该成员函数原型如下:
int GetCheckedRadioButton(int nIDFirstButton,int nIDLastButton);
第一个参数nIDFirstButton是同一组中的第一个单选钮控件的ID,
nIDLastButton是同一组中最后一个单选钮控件的ID。
成员函数GetCheckedRadioButton返回指定组中所选中的单选钮的ID,如果没有按扭被选中,则返回0。
注意,若干个单选钮是否属于同一组是以其Tab顺序来排定的,
而GetCheckedRadioButton函数是以ID顺序来检查按钮的选定状态的。
因此,如果传递给函数GetCheckedRadioButton的第一个参数的值大于第二个参数的值时,
其返回值总是为0,而事实上由这两个参数指定的单选钮的Tab顺序可能恰恰相反。
因此,一般情况下我们应该尽量保证同一组单选钮的资源ID是连续递增的。
通常这些资源ID是在头文件Resource.h中定义的。
如果你同一组的单选钮不是一次创建的,
那么它们的资源ID可能不是连续递增的,
甚至可能是相反的。我们可以手动的修改资源头文件中的宏定义,
以保证GetCheckedRadioButton函数得到正确的结果。
MFC的话,假设你有几个单选按钮,ID分别是Radio_1 Radio_2:
CButton* theradio = (CButton*) GetDlgItem(Radio_1);
bool checked 1 = theradio -> GetCheck();
theradio = (CButton*) GetDlgItem(Radio_2);
bool checked 2 = theradio -> GetCheck();
这2个布尔值就表示Radio_1和Radio_2是否被选择.
如果有大量单选按钮,不必一个一个检查,用下面这个static函数
int buffer;
CButton::CheckRadioButtons( radio_1, radio_10, buffer)
buffer就会获得这10个按钮中被选中的那个的ID.
问题1:如何让Radio1或者Radio2默认选上?如何知道哪个被选上了?
关键是选上,“默认”只要放在OnInitDialog()即可。三种方法可以让它选上,
第一种:
((CButton *)GetDlgItem(IDC_RADIO1))->SetCheck(TRUE);//选上
((CButton *)GetDlgItem(IDC_RADIO1))->SetCheck(FALSE);//不选上
((CButton *)GetDlgItem(IDC_RADIO1))->GetCheck();返回1表示选上,0表示没选上
第二种:
关联一个congtrol型变量(子类化),好ctrl+W(即打开classwizard),
点开 Member Variables,咦?怎么没有IDC_RADIO1这个ID?原来是没有分组。
因为radio button通常都是成组使用的,在一组里面是互斥的。
取消,回到对话框资源面板,右键Radio1查看属性把Group选上,
那么,Radio1和Radio2就是一组了(怎么知道他们是一组的?后面说)。
此时,就可以为Radio1增加一congtrol型变量m_ctrlRadio1了。如下:
m_ctrlRadio1.SetCheck(TRUE);
同样可以使用GetCheck()获取状态。
如何初始化单选按钮,即默认一个单选按钮
初始化第一个单选按选,即默认第一个单选按钮
在此函数里 CLotteryDlg::OnInitDialog()
CButton *pB;
pB=(CButton*)GetDlgItem(IDC_RADIO1);
pB->SetCheck(TRUE);
被分到一组里的单选框是互斥的,不在一个组里的单选框是互不影响的(组框里的单选框只能一个被选中)
VC中建立基于对话框的类,在对话框控件中添加组框,在组框中放三个单选框
ID分别为IDC_RADIO1,IDC_RADIO2,IDC_RADIO3.可以在对话框控件中添加一个Button控件,
在Button控件单击命令响应中添加如下代码:
UINT nSex=GetCheckedRadioButton(IDC_RADIO1,IDC_RADIO3);//参数分别为第一个、最后一个单选框的ID号
switch(nSex)
{
case IDC_RADIO1:
::AfxMessageBox("选中第一个");break;
case IDC_RADIO2:
::AfxMessageBox("选中第2个");break;
case IDC_RADIO3:
::AfxMessageBox("选中第3个");break;
}