MFC中单选框和复选框的选择

单选钮用来表示一系列的互斥选项,这些互斥项常常被分成若干个组,每组仅允许用户选择一个选项;复选框与单选按钮相象,不同之处是复选框代表多重选择,用户可以选择一个或多个选项。
为了方便说明,我们假定创建了基于对话框的MFC应用程序,第一个组框为"分数",内有四个单选按钮:"100","90","80","70".ID分别为IDC_RADIO1,IDC_RADIO2,IDC_RADIO3,IDC_RADIO4;IDC_RADIO1的Group属性为TRUE.第二个组框为"加权",内有四个复选按钮:"10","9","8","7",ID分别为IDC_CHECK1,IDC_CHECK2,IDC_CHECK3,IDC_CHECK4;IDC_CHECK1的Group属性为TRUE.
判断哪个单选按钮按下:第一种方式:给IDC_RADIO1关联一个int型变量m_radio,首先调用UpdateData(TRUE);然后判断IDC_RADIO1的值 

 

void CCBaseButtonDlg::OnCheckin()
{
// TODO: Add your control notification handler code here
GetDlgItem(ID_RESET)->EnableWindow(true);    //重新选择有效
GetDlgItem(ID_CHECKIN)->EnableWindow(false);    //提交按钮无效
UpdateData(true);
m_show="内存: ";         //保存输出消息字符串
CString str;
switch(m_radio)
{
  case 0:           //该组第一个单选项被选中
   GetDlgItemText(IDC_RADIO1,str);
   m_show=m_show+str;
   break;
  case 1:           //该组第二个单选项被选中
   GetDlgItemText(IDC_RADIO2,str);
   m_show=m_show+str;
   break;
  case 2:           //该组第三个单选项被选中
   GetDlgItemText(IDC_RADIO3,str);
   m_show=m_show+str;
   break;
 
}
if(m_check1.GetCheck()==1)       //复选框1被选中
{
  GetDlgItemText(IDC_CHECK1,str);
  m_show=m_show+str;

}

if(m_check2.GetCheck()==1)       //复选框2被选中
{
  GetDlgItemText(IDC_CHECK2,str);
  m_show=m_show+str;
}
if(m_check3.GetCheck()==1)       //复选框3被选中
{
  GetDlgItemText(IDC_CHECK3,str);
  m_show=m_show+str;
}
if(m_check4.GetCheck()==1)       //复选框4被选中
{
  GetDlgItemText(IDC_CHECK4,str);
  m_show=m_show+str;
}
UpdateData(false);


}

void CCBaseButtonDlg::OnReset()
{
// TODO: Add your control notification handler code here
GetDlgItem(ID_RESET)->EnableWindow(false);    //重新选择按钮无效
GetDlgItem(ID_CHECKIN)->EnableWindow(true); //提交选择按钮有效
m_radio=1;           //单选框的默认值
m_check1.SetCheck(0);        //复选框1不选中
m_check2.SetCheck(0);        //复选框2不选中
m_check3.SetCheck(0);        //复选框3不选中
m_check4.SetCheck(0);        //复选框4不选中
m_show="";
UpdateData(false);


}

 

 

//

switch(m_radio)
                            {
                                   case 0:
                                            MessageBox(_T("100"));
                                            break;
                                   case 1:
                                            MessageBox(_T("90"));
                                            break;
                                   case 2:
                                            MessageBox(_T("80"));
                                            break;
                                   case 3:
                                            MessageBox(_T("70"));
                                            break;
                            }
          第二种方式:
                            switch(GetCheckedRadioButton(IDC_RADIO1,IDC_RADIO4))
                            {
                                   case IDC_RADIO1:
                                            MessageBox(_T("100"));
                                            break;
                                   case IDC_RADIO2:
                                            MessageBox(_T("90"));
                                            break;
                                   case IDC_RADIO3:
                                            MessageBox(_T("80"));
                                            break;
                                   case IDC_RADIO4:
                                            MessageBox(_T("70"));
                                            break;
                            }
判断哪些复选按钮按下:第一种方式:给IDC_CHECK1~IDC_CHECK4分别关联一个BOOL型变量m_check1~m_check4,首先调用UpdateData(TRUE);然后判断各个变量的值;
                              if(m_check1==TRUE)
                                         str+="10";
                               if(m_check2==TRUE)
                                         str+="9";
                               if(m_check3==TRUE)
                                         str+="8";
                               if(m_check4==TRUE)
                                         str+="7";
                              MessageBox(str);
         第二种方式:给IDC_CHECK1~IDC_CHECK4分别关联一个CButton型变量m_check1~m_check4判断各个变量的值;
                              if(m_check1.GetCheck()==1)
                                         str+="10";
                               if(m_check2.GetCheck()==1)
                                         str+="9";
                               if(m_check3.GetCheck()==1)
                                         str+="8";
                               if(m_check4.GetCheck()==1)
                                         str+="7";
                              MessageBox(str);
         第三种方式:利用GetDlgItem()函数
                              CButton *pBtn1=(CButton*)GetDlgItem(IDC_CHECK1);
                              CButton *pBtn3=(CButton*)GetDlgItem(IDC_CHECK2);
                              CButton *pBtn3=(CButton*)GetDlgItem(IDC_CHECK3);
                              CButton *pBtn4=(CButton*)GetDlgItem(IDC_CHECK4);
                              if(pBtn1->GetCheck()==1)
                              str+="10";
                              if(pBtn2->GetCheck()==1)
                              str+="9";
                              if(pBtn3->GetCheck()==1)
                              str+="8";
                              if(pBtn4->GetCheck()==1)
                              str+="7";
         第四种方法:利用IsDlgButtonChecked()函数
                              if(BST_CHECKED == IsDlgButtonChecked( IDC_CHECK1 ))
                                           str+="10";
                              if(BST_CHECKED == IsDlgButtonChecked( IDC_CHECK2 ))
                                           str+="9";
                              if(BST_CHECKED == IsDlgButtonChecked( IDC_CHECK3 ))
                                           str+="8";
                              if(BST_CHECKED == IsDlgButtonChecked( IDC_CHECK4 ))
                                           str+="7";
                              MessageBox(str);

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值