MFC控件(3):CheckBox_RadioButton

使用图形界面时我们经常会碰到一些选项,如果是多选就是Check Box可以同时选多个内容,单选的话就是Radio Button.

Check Box用法简介

check box一般是绑定到一个布尔变量.

BOOL m_bShowAll;

DDX_Check(pDX,IDC_CHECK_SHOW_ALL,m_bShowAll);

m_bShowAll = FALSE; //表示没选

m_bShowAll = TRUE;//表示选择

UpdateData(FALSE); //更改了m_bShowAll的值后记得调用下这函数来更新页面上的显示.反过来如果更改了页面上的check box选项要通过UpdateData();来更新m_bShowAll的值.

 

通过函数直接来操作

 

设置是checkbox状态

((CButton*)GetDlgItem(IDC_CHECK_SHOW_ALL))->SetCheck(BST_CHECKED);//设置为选择上,如果不选则是BST_UNCHECKED,要是还设为Tri_state设为未这状态就是BST_INDETERMINATE

 

获取checkbox状态

方法1

int ret = ((CButton*)GetDlgItem(IDC_CHECK_SHOW_ALL))->GetCheck(); //0为没选上,1为选上.未这状态为2.在者对应的宏分别是

BST_CHECKED, BST_UNCHECKED, BST_INDETERMINATE (未定状态只有在checkbox属性Tri_state设为true时才有

 

方法2

int ret = IsDlgButtonChecked(IDC_CHECK_SHOW_ALL); //选上返回1,未选返回0,未定状态返回2

 

消息处理

当然了有时如果在选上了check box后要做些啥操作的话一般要写下它对应的消息处理函数.

afx_msg void OnBnClickedCheckShowAll();

 

ON_BN_CLICKED(IDC_CHECK_SHOW_ALL, OnBnClickedCheckShowAll)

void CCheckTest::OnBnClickedCheckShowAll(){

//添加要处理的相应操作

}

 

Radio Buton

绑定变量时用DDX_Radio

它跟check box类似,只不过它表示单选.一次只能选一个.当其中一个选上时会自动让其他的不选上.

Radio Button的使用中最令人迷糊的就是分组的使用.

未分组的使用

如果所有radio button的属性设置中group都是False,这种情况是最简单.

如果你在页面中直接选的话,选上一个后另外的会自动变为未选.但是radio button如果像上面check box一样使用SetCheck来设置.那可能会出现两个同时选上的情况.所以得显式的去让其他的变为未选.

当然如果只是两三个选项你手动写代码实现也没啥,但如果来个几十个,那就会让你头晕的.

分组的使用

先来说下Tab顺序

一般的如果页面上有很多控件,我们最好给它们排个序,按下Ctrl + D,每个控件上会显示一个数字出来.你可以改变那些数字顺序.确定了这些顺序后.你以后可以通过Tab键来按顺序切换到不同的控件以获得焦点.

 

分成一组

假如有4个radio button,把tab顺序排一位的(假设是IDC_RADIO_SEL属性设:groupt为True,Auto为True,TabStop为True.然后后面三个radio button的group全设为False.

IDC_RADIO_SEL绑定一个int类型变量,m_nSelection,一般在构造函数中把它初始化为0,表示分组中的第一个button选上.m_nSelection如果为1,2,3则代表后面三个button哪一个被选上.

 

分成多组

分组是这样分的,从第一个radio button的group设为True的开始按Tab顺序往后找,再次碰到group为True就是表示一组的结束,另外一组的开始.所以假如有R1,R2,R3,R4这4个radio button的话.想把R1,R2分一组,另两个一组则可以这样

先排好Tab顺序,然后把R1的group设为True,R2的为False

R3的group设为True,R4的为False.

然后把R1绑定变量m_nOne;

R2绑定变量m_nTwo

 

消息处理

跟check box一样,都是ON_BN_CLICKED(ID_XXXX,FunXXX)这样指定一个回调函数.跟Button的消息处理也完全一样.

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值