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

标签 c++ mfc checkbox

我已经检查了很多地方的答案,他们推荐我这样做的方式,但它似乎对我不起作用,所以任何帮助将不胜感激。

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

以下代码是我创建的:

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 选项。

非常感谢

最佳答案

如果您阅读 manual pageGetState 上,您会看到它返回一个位掩码。

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

if ((nCheck & BST_CHECKED) != 0)
{
    // Button is checked
}
else
{
    // Button is unchecked
}

然而,GetCheck可能更适合您的情况。

关于c++ - 如何查看是否选中了 MFC 复选框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12091887/

相关文章:

c++ - 用于创建混合类的 MPL 工厂方法

c++ - `for_each_arg` 的正确用法 - 转发过多?

c++ - MFC 使一个类同时扩展 CView 和 CDockablePane

winapi - WM_COMMAND WM_NOTIFY 自定义通知代码

c++ - 在 CMFCToolBar 中为顶级 CMFCToolBarButton 设置图像

Angular 2 : Default checked on checkbox in ngFor

java - opencv中哪个函数可以检测并去除物体的阴影?

c++ - Ostringstream 不同的结果

Javascript 根据复选框值过滤内容

javascript - 当另一个复选框被重叠选中时取消全部选中/选中一个复选框