简体   繁体   English

如何在菜单项MFC C ++上设置检查

[英]How to set check on menu item mfc c++

how to set check on menu item mfc c++ i try this but, always unchecked menu item. 如何设置菜单项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);
    }

thanks for help. 感谢帮助。

You want the | 您想要| operator, not the || 运算符,而不是|| operator. 操作员。

You want to combine the MF_CHECKED and MF_BYCOMMAND bit flags, which you do with a bitwise OR operation. 您想结合使用按位或操作进行的MF_CHECKEDMF_BYCOMMAND位标志。 That requires the | 这需要| operator. 操作员。

Change your code to look like this: 更改您的代码,如下所示:

popMenu.CheckMenuItem(IDC_DEFAULTREMOVE, MF_CHECKED | MF_BYCOMMAND);


The || || operator is the logical OR operator. 运算符是逻辑或运算符。 It actually gives you this: 它实际上为您提供了这一点:

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

Which is equivalent to MF_UNCHECKED . 等效于MF_UNCHECKED

Try to use ID_CONFIGURATION_DEFAULT instead of IDC_DEFAULTREMOVE in the statement popMenu.CheckMenuItem(IDC_DEFAULTREMOVE, MF_CHECKED || MF_BYCOMMAND); 尝试在语句popMenu.CheckMenuItem(IDC_DEFAULTREMOVE,MF_CHECKED || MF_BYCOMMAND)中使用ID_CONFIGURATION_DEFAULT代替IDC_DEFAULTREMOVE。

ID_CONFIGURATION_DEFAULT - command ID IDC_DEFAULTREMOVE - string resource ID ID_CONFIGURATION_DEFAULT-命令ID IDC_DEFAULTREMOVE-字符串资源ID

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM