【MFC基础】03复选框Check Box

MFC中复选框checkbox控件,至少有三种方法对其进行操作

 第一种是利用Cbutton成员函数GetCheck和SetCheck,
 第二种是利用CWnd成员函数IsDlgButtonChecked,
 第三种是把checkbox复选框控件与BOOL型变量相关联。

一、用CButton成员函数

MFC中复选框CheckBox的基类是CButton。那么就可以用GetDlgItem来获取复选框的指针,再用Cbutton成员函数GetCheck和SetCheck来获取和设置选中状态。
获取复选框状态:

 CButton* pBtn = (CButton*)GetDlgItem(IDC_CHECK_MIXI); 
 BOOL state = pBtn->GetCheck(); 
 当state == FALSE时表示该复选框没有被选中; 
 当state == TRUE时表示该复选框被选中; 

设置复选框状态:
一般复选框是通过鼠标勾选的,也可以通过函数设置其状态。

 CButton* pBtn = (CButton*)GetDlgItem(IDC_CHECK1); 
 pBtn->SetCheck(1); 

二、用CWnd成员函数

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

三、关联CButton型成员变量

复选框CheckBox控件添加一个Control类型的控件变量如:CButton m_check;

void CMFCApplication3Dlg::DoDataExchange(CDataExchange* pDX) 
{ 
    CDialogEx::DoDataExchange(pDX); 
    DDX_Control(pDX, IDC_CHECK1, m_check); 
} 

使能复选框:

m_check.EnableWindow(TRUE); 

设置复选框状态:

m_check.SetCheck(0);//方法1 
SetCheck(BST_CHECKED)效果相同 
((CButton*)GetDlgItem(IDC_CHECK1))->SetCheck(0);//方法2 
其中IDC_CHECK1为控件ID 
SetCheck(1)表示设置复选框为“选中”状态; 
SetCheck(0)表示设置复选框为“未选中”状态; 
SetCheck(2)设置复选框为不确定状态(This value can be used only if the button has the BS_3STATE or BS_AUTO3STATE style.)

获取复选框状态:

int value= m_check.GetCheck(); 
返回1表示选中,返回0表示未选中。   
用参数判断选中与否: 
变量       		状态 
BST_UNCHECKED	未选中 
BST_CHECKED     选中 

四、关联int型、BOOL型成员变量

复选框CheckBox控件添加一个Value类型的控件变量如:BOOL m_check;或者int m_check;

void CMFCApplication3Dlg::DoDataExchange(CDataExchange* pDX) 
{ 
	CDialogEx::DoDataExchange(pDX); 
	DDX_Check(pDX, IDC_CHECK1, m_check); 
	//DDX_Control(pDX, IDC_CHECK1, m_check1); 
} 
注意:使用Value类型的变量时,要加Updatedata()

实例

int nState = m_check.GetCheck();  
if (nState == BST_CHECKED)  
{  
	//选中 
}  
else   
{  
    //未选中 
} 
  • 4
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

SuperJun12345

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

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

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

打赏作者

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

抵扣说明:

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

余额充值