对vc中radio单选按钮进行初始化!...

 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;
 }

 


 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

friendan

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值