我已经检查了许多地方的答案,他们推荐我这样做的方式,但它似乎不适合我,所以任何帮助将不胜感激.
我有一个复选框,我希望它在检查时启用一个编辑框,并在取消选中时禁用它.
以下代码是我创建的:
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);
}
Run Code Online (Sandbox Code Playgroud)
当我在调试中运行它时,nCheck是520,所以直接进入else选项.
非常感谢
如果您阅读手册页,GetState您将看到它返回一个位掩码.
这意味着您不能直接在比较中使用它,您必须像面具一样检查它:
if ((nCheck & BST_CHECKED) != 0)
{
// Button is checked
}
else
{
// Button is unchecked
}
Run Code Online (Sandbox Code Playgroud)
但是,GetCheck在您的情况下可能更合适.