Как установить проверку по пункту меню mfc c ++ - PullRequest
0 голосов
/ 22 декабря 2011

как установить галочку в пункте меню 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);
    }

спасибо за помощь.

Ответы [ 2 ]

1 голос
/ 22 декабря 2011

Требуется оператор |, а не оператор * 1002. *

Требуется объединить битовые флаги MF_CHECKED и MF_BYCOMMAND, которые вы делаете спобитовое ИЛИ операция.Для этого требуется оператор |.

Измените код так, чтобы он выглядел следующим образом:

popMenu.CheckMenuItem(IDC_DEFAULTREMOVE, MF_CHECKED | MF_BYCOMMAND);


Оператор || является логическим оператором ИЛИ.Это фактически дает вам следующее:

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

Что эквивалентно MF_UNCHECKED.

0 голосов
/ 15 апреля 2015

Попробуйте использовать ID_CONFIGURATION_DEFAULT вместо IDC_DEFAULTREMOVE в выражении popMenu.CheckMenuItem (IDC_DEFAULTREMOVE, MF_CHECKED || MF_BYCOMMAND);

ID_CONFIGURATION_DEFAULT - идентификатор команды IDC_DEFAULTREMOVE - строковый идентификатор ресурса

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...