c++ - 如何设置检查菜单项mfc C++

标签 c++ visual-c++ mfc

如何设置对菜单项的检查 mfc c++ 我尝试了这个但是,总是未检查菜单项。

CString tcBuff; 
    CMenu popMenu;
    popMenu.LoadMenu(nMenuID);

    if (text.Compare(defaultconfig) == 0)
    {

        tcBuff.LoadStringW(IDC_DEFAULTREMOVE);
        popMenu.ModifyMenuW(ID_CONFIGURATION_DEFAULT,0,ID_CONFIGURATION_DEFAULT,tcBuff);
        popMenu.CheckMenuItem(IDC_DEFAULTREMOVE, MF_CHECKED || MF_BYCOMMAND);
    }

感谢您的帮助。

最佳答案

您需要 | 运算符,而不是 || 运算符。

您想合并 MF_CHECKEDMF_BYCOMMAND 位标志,您可以使用按位或运算来完成。这需要 | 运算符。

将您的代码更改为如下所示:

popMenu.CheckMenuItem(IDC_DEFAULTREMOVE, MF_CHECKED | MF_BYCOMMAND);


|| 运算符是逻辑 OR 运算符。它实际上给了你这个:

0x8 /* MF_CHECKED */  ||  0x0 /* MF_BYCOMMAND */ == 0

这相当于 MF_UNCHECKED

关于c++ - 如何设置检查菜单项mfc C++,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8601556/

相关文章:

c++ - 在类模板中创建映射元组

c++ - 如何使用 C++ 编写我自己的下载管理器?

c++ - 迭代中的指针算法是否溢出安全?

visual-c++ - 如何让 MSBuild 自动下载解决方案/项目中引用的新 nuget 包?

c - 回调的成本如何?

visual-c++ - 如何将 std::variant 作为 VARIANT* 传递给 ExecWB?

c++ - 如何制作多客户端 UDP 服务器

mfc - 为什么在按下 Alt 之前我的 AfxMessageBox 不可见/隐藏?

c++ - 意识到对象何时更改某些值

c++ - 为什么这个 Clang ASTMatcher 会导致错误的多态转换?