C++ 如何查看是否选中了MFC复选框

C++ 如何查看是否选中了MFC复选框,c++,mfc,checkbox,C++,Mfc,Checkbox,我已经在很多地方找到了答案,他们推荐了我的方法,但对我来说似乎不起作用,所以如果有任何帮助,我将不胜感激 我有一个复选框,我希望它在选中时启用编辑框,在未选中时禁用它 以下代码是我创建的: void CMFCApplication1Dlg::OnBnClickedCheck1() { UINT nCheck = CheckBox.GetState(); if (nCheck == BST_CHECKED) { EditBox.EnableWindow(TR

我已经在很多地方找到了答案,他们推荐了我的方法,但对我来说似乎不起作用,所以如果有任何帮助,我将不胜感激

我有一个复选框,我希望它在选中时启用编辑框,在未选中时禁用它

以下代码是我创建的:

void CMFCApplication1Dlg::OnBnClickedCheck1()
{
    UINT nCheck = CheckBox.GetState();
    if (nCheck == BST_CHECKED)
    {
        EditBox.EnableWindow(TRUE);
    }
    else if (nCheck == BST_UNCHECKED)
    {
        EditBox.EnableWindow(FALSE);
    }
    else
    {
        EditBox.EnableWindow(TRUE);
    }
当我在调试中运行nCheck时,它是520,所以直接转到else选项


非常感谢

CButton的GetState获取对话框对象的当前状态。您想要使用的是CButton的GetCheck

或者,您可以对返回值执行位掩码以获取当前检查状态,但GetCheck就在那里,因此您也可以使用它。

如果您在
GetState
上阅读,您将看到它返回位掩码

这意味着您不能在比较中直接使用它,您必须像检查掩码一样检查它:

if ((nCheck & BST_CHECKED) != 0)
{
    // Button is checked
}
else
{
    // Button is unchecked
}
但是,在您的情况下可能更合适。

来自:


要将名为IDC_CHECK1的复选框的状态读取到变量中,请执行以下操作:

bool IsCheck1Checked;
使用以下代码:

CButton *m_ctlCheck1 = (CButton*)GetDlgItem(IDC_CHECK1);
IsCheck1Checked = (m_ctlCheck1->GetCheck() == 1) ? true : false;
CButton *m_ctlCheck1 = (CButton*)GetDlgItem(IDC_CHECK1);
IsCheck1Checked = (m_ctlCheck1->GetCheck() == 1) ? true : false;