MFC Tri-state CheckBox — 如何改变状态的顺序?
MFC Tri-state CheckBox — how to change the order of the states?
如何改变三态MFC CheckBox控件的顺序?
现在,当我单击它时,它具有以下状态顺序:
BST_INDETERMINATE > BST_UNCHECKED > BST_CHECKED > 循环
但我需要以下内容:
BST_INDETERMINATE > BST_CHECKED > BST_UNCHECKED > 循环
感谢 Adrian Mole 的评论提示!
我忘了从 BS_AUTO3STATE 更改为 BS_3STATE。
可行的解决方案:
void CTestDialog::OnCheckBoxClicked()
{
int state = ((CButton*)GetDlgItem(IDC_CHECKBOX))->GetCheck();
if (state == BST_INDETERMINATE)
((CButton*)GetDlgItem(IDC_CHECKBOX))->SetCheck(BST_CHECKED);
else if (state == BST_CHECKED)
((CButton*)GetDlgItem(IDC_CHECKBOX))->SetCheck(BST_UNCHECKED);
else
((CButton*)GetDlgItem(IDC_CHECKBOX))->SetCheck(BST_INDETERMINATE);
}
如何改变三态MFC CheckBox控件的顺序?
现在,当我单击它时,它具有以下状态顺序: BST_INDETERMINATE > BST_UNCHECKED > BST_CHECKED > 循环
但我需要以下内容: BST_INDETERMINATE > BST_CHECKED > BST_UNCHECKED > 循环
感谢 Adrian Mole 的评论提示!
我忘了从 BS_AUTO3STATE 更改为 BS_3STATE。
可行的解决方案:
void CTestDialog::OnCheckBoxClicked()
{
int state = ((CButton*)GetDlgItem(IDC_CHECKBOX))->GetCheck();
if (state == BST_INDETERMINATE)
((CButton*)GetDlgItem(IDC_CHECKBOX))->SetCheck(BST_CHECKED);
else if (state == BST_CHECKED)
((CButton*)GetDlgItem(IDC_CHECKBOX))->SetCheck(BST_UNCHECKED);
else
((CButton*)GetDlgItem(IDC_CHECKBOX))->SetCheck(BST_INDETERMINATE);
}