MFC如何判断复选框选中个数。我做了3个选项,用if语句判断不了!

//运行时如果选择多过2个选项时则只出现1个MessageBox,难道要写3×3=9个if语句来判断?还有没有什么好的解决方法?voidCDoSomeThing::OnO... //运行时如果选择多过2个选项时则只出现1个MessageBox,难道要写3×3=9个if语句来判断?还有没有什么好的解决方法?

void CDoSomeThing::OnOK()
{
// TODO: Add extra validation here
CButton* pBtn1 = (CButton*)GetDlgItem(IDC_CHECK1);
CButton* pBtn2 = (CButton*)GetDlgItem(IDC_CHECK2);
CButton* pBtn3 = (CButton*)GetDlgItem(IDC_CHECK3);
int state1 = pBtn1->GetCheck();
int state2 = pBtn2->GetCheck();
int state3 = pBtn3->GetCheck();
if(state1==1)
{
Function1();
MessageBox("您没有选择任何定时功能111!");
}
else if(state2==1)
{
Function2();
MessageBox("您没有选择任何定时功能222!");
}
else if(state3==1)
{
Function3();
MessageBox("您没有选择任何定时功能333!");
}
else if(state1==0&&state2==0&&state3==0)
{
MessageBox("您没有选择任何定时功能!");
}
}
展开
 我来答
百度网友6eab688
2012-08-01 · TA获得超过4692个赞
知道大有可为答主
回答量:962
采纳率:50%
帮助的人:951万
展开全部
三个选项,完整组合是8种情况。问题是你有几种对应的处理?如果你也定义了8种处理,那就是一一对应,否则就要先想好怎么个对应法。
如果是一一对应的话,我一般会定义个转换表,将三个Checkbok的状态,组合到一起,产生0~7的数字,然后根据数字,去执行对应的功能。
例如
CString msg[8] = {
"无选择",
"选择1”,
"选择2“,
... };
int nResult = (state1==1) | ((state2 == 1) << 1) | ((state3 == 1) << 2);
CString strMsg = msg[nResult];
类似这样一种形式
追问
我就是做了3个执行函数,一一对应每一个选项,但是多选时只执行一个函数,不知道为什么。
追答
如果你希望每个选项对应执行一个函数,如果选了多个,那就执行对应的多个函数,那判断应该这样写

if (state1 == BST_CHECKED)
Function1();

if (state2 == BST_CHECKED)
Function2();

if (state3 == BST_CHECKED)
Function3();
这些判断之间不要加 else
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式