【问题标题】:MFC Tri-state CheckBox — how to change the order of the states?MFC Tri-state CheckBox — 如何改变状态的顺序?
【发布时间】:2021-03-24 13:33:45
【问题描述】:

如何改变三态MFC CheckBox控件的顺序?

现在,当我单击它时,它具有以下状态顺序: BST_INDETERMINATE > BST_UNCHECKED > BST_CHECKED > 循环

但我需要以下内容: BST_INDETERMINATE > BST_CHECKED > BST_UNCHECKED > 循环

【问题讨论】:

  • 您是否尝试过为点击消息提供处理程序并将状态从它曾经是/现在的状态更改为您想要的状态?
  • 是的,我试过 OnClick — 没有成功。
  • 您的复选框是如何定义的(在资源脚本中)?是AUTOCHECKBOX 吗?如果是这样,也许将其设为非自动(仅CHECKBOX)并自己处理设置状态。
  • 是的,你是对的!它是 BS_AUTO3STATE。我已将其更改为 BS_3STATE,现在可以使用了!

标签: c++ visual-c++ checkbox mfc


【解决方案1】:

感谢 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);
}

【讨论】:

    猜你喜欢
    • 2010-11-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-11-21
    • 1970-01-01
    • 1970-01-01
    • 2018-06-03
    相关资源
    最近更新 更多