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;