MFC中CheckBox的状态判断

https://blog.csdn.net/tianxia_rwx/article/details/53057729

  MFC中复选框Checkbox控件,查找到有四种方法可对其进行操作。
  1,利用CButton成员函数GetCheck和SetCheck。
  2,利用CWnd成员函数IsDlgButtonChecked。
  3,把CheckBox复选框控件与Value类别BOOL型变量相关联。
  4,把CheckBox复选框控件与Control类别CButton类型变量相关联。
  
下面进行详细介绍:

1,利用CButton成员函数GetCheck和SetCheck。

int state =((CButton *)GetDlgItem(IDC_CHECK1))->GetCheck();
     
     
     
     
  • 1

返回值说明:
  if state == 0,按钮处于未选中状态。
  if state == 1,按钮处于选中状态。
  if state == 2,按钮状态不确定(仅当按钮风格为BS_3STATE或BS_AUTO3STATE时)。如果按钮是其它风格,则返回0

可使用下方函数进行状态设置:

((CButton *)GetDlgItem(IDC_CHECK1))->SetCheck(int nCheck);
     
     
     
     
  • 1

参数 nCheck 指定按钮控件的选中状态。可能的取值如下:
  if nCheck == 0,把按钮设为未选中状态。
  if nCheck == 1,把按钮设为选中状态 。
  if nCheck == 2,把按钮设为不确定状态。仅当按钮的风格是BS_3STATE或BS_AUTO3STATE时有效。

2,利用CWnd成员函数IsDlgButtonChecked。

  CButton的基类是CWnd,那么就可以用IsDlgButtonChecked来获取和设置Check Box的状态。另外MSDN上说明IsDlgButtonChecked还可以用于单选框Radio Button。

UINT IsDlgButtonChecked( int nIDButton ) const;
     
     
     
     
  • 1

nIDButton为控件ID
函数功能:
  该函数可以确定某个按钮控制是否有选中标志,或者三态按钮控制是否为灰色的、选中的、或两者都不是。
返回值:
  使用BS_AUTOCHECKBOX、BS_AUTORADIOBUTTON、BS_AUTO3STATE、BS_CHECKBOX、BS_RADIOBUTION或BS_3STATE样式创建的按钮的返回值可以是如下值之一:
  BST_CHECKED:表示按钮被选中。
  BST_INDETERMINATE:表示按钮是灰色的,即为不确定状态(只有具有BS_3STATE或BS_AUTO3STATE样式的按钮才使用该值)。
  BST_UNCHECKED:表示该按钮未选中(unckecked)。如果该按钮用其他任何样式,那么返回值为零。

if ( BST_CHECKED == IsDlgButtonChecked( IDC_CHECK1 ) )
{
    //IDC_CHECK1是CheckBox控件。
    //Check Box被选中执行相关动作
}
     
     
     
     
  • 1
  • 2
  • 3
  • 4
  • 5

3,把CheckBox复选框控件与Value类别BOOL型变量相关联。

  为复选框CheckBox控件添加一个控件类型的BOOL值变量如:BOOL m_CheckBox1;

void MyTestDlg::DoDataExchange (CDataExchange *pDX)
{
    //此代码利用类向导可以自动生成
    MyTestDlg::DoDataExchange (pDX) ;
    DDX_Check(pDX, IDC_CHECK1, m_CheckBox1);
}
//下方是代码片段
//从控件获得数据,获得输入数据后可以进行状态判断 
UpdateData(TRUE); 
BOOL state = m_CheckBox1;
//向控件更新数据,设置控件的状态
m_CheckBox1 = TRUE;
UpdateData(FALSE);
     
     
     
     
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13

4,把CheckBox复选框控件与Control类别CButton类型变量相关联。

  为复选框CheckBox控件添加一个类别为Control,变量类型为CButton的变量:m_CheckBox1;

void MyTestDlg::DoDataExchange(CDataExchange* pDX)  
{
    CPropertyPage::DoDataExchange(pDX);  
    DDX_Control(pDX, IDC_CHECK1, m_CheckBox1); 
}
//下方是代码片段
//从控件获得数据,获得输入数据后可以进行状态判断 
UpdateData(TRUE); 
BOOL state = m_CheckBox1.GetCheck();
//向控件更新数据,设置控件的状态
m_CheckBox1.SetCheck(int nCheck);
UpdateData(FALSE);
     
     
     
     
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12

这个其实和第一种强制转换成(CButton *)一样的。

友情链接:
http://blog.csdn.net/dytdyt2010/article/details/43064031
http://www.creocn.com/mfc-check-box-using-exp.html
http://blog.sina.com.cn/s/blog_817a5eb601015xtr.html

        
            

你可能感兴趣的:(MFC中CheckBox的状态判断)