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("您没有选择任何定时功能!");
}
} 展开
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("您没有选择任何定时功能!");
}
} 展开
1个回答
展开全部
三个选项,完整组合是8种情况。问题是你有几种对应的处理?如果你也定义了8种处理,那就是一一对应,否则就要先想好怎么个对应法。
如果是一一对应的话,我一般会定义个转换表,将三个Checkbok的状态,组合到一起,产生0~7的数字,然后根据数字,去执行对应的功能。
例如
CString msg[8] = {
"无选择",
"选择1”,
"选择2“,
... };
int nResult = (state1==1) | ((state2 == 1) << 1) | ((state3 == 1) << 2);
CString strMsg = msg[nResult];
类似这样一种形式
如果是一一对应的话,我一般会定义个转换表,将三个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
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询