首页 > 其他分享 >对vc中radio单选按钮进行初始化!...

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

时间:2023-01-16 10:34:16浏览次数:45  
标签:... vc RADIO1 CButton ID 单选 选中 IDC


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

 

标签:...,vc,RADIO1,CButton,ID,单选,选中,IDC
From: https://blog.51cto.com/softo/6010098

相关文章