MFC 复选框选中和是否被选中判断

  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();

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

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

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

参数 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;

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被选中执行相关动作
}

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

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

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

oid 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);

这个其实和第一种强制转换成(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
--------------------- 
作者:tianxia_rwx 
来源:CSDN 
原文:https://blog.csdn.net/tianxia_rwx/article/details/53057729 
版权声明:本文为博主原创文章,转载请附上博文链接!

猜你喜欢

转载自blog.csdn.net/zb774095236/article/details/88949945
今日推荐