Вопрос № 91637: помогите пожалуйста дорогие эксперты.
у меня никак не работает галочка в сплывающем меню.. все пересмотрел, MSDN почитал.. но вроде делаю все правильно а оно не работает.
глупость , аж спрашивать стыдно.
смысл такой : ввыпадающем ...
Вопрос № 91.637
помогите пожалуйста дорогие эксперты.
у меня никак не работает галочка в сплывающем меню.. все пересмотрел, MSDN почитал.. но вроде делаю все правильно а оно не работает.
глупость , аж спрашивать стыдно.
смысл такой : ввыпадающем меню изначально стоит галочка. при нажатии на пункт меню галочка убирается. еще раз нажать появляется опять..
вот часть кода меню: (а именно, тот пункт в котором галочка..)
Код:
InsertMenu(hPopupMenu, 1, MF_BYPOSITION | MF_STRING | MF_CHECKED, ID_CONTEXT_MENU1, "&Check");
вот код WM_COMMAND на Id пункта:
Код:
CheckMenu = GetMenuState(hPopupMenu, 1, MF_BYPOSITION);
if (CheckMenu == MF_CHECKED)
{
CheckMenuItem(hPopupMenu, 1, MF_UNCHECKED );
}
else
{
CheckMenuItem(hPopupMenu, 1, MF_CHECKED );
}
Отправлен: 16.06.2007, 15:40
Вопрос задал: Plazzmex (статус: Посетитель)
Всего ответов: 1 Мини-форум вопроса >>> (сообщений: 3)
Отвечает: Jadd
Здравствуйте, Plazzmex!
Ошибка как раз в том, что Вы невнимательно прочитали о возвращаемых значениях функции GetMenuState. она не возвращает конкретное значение, она возвращает маску значений, из которой нужно извлечь состояние нужного флага. Т.е. в Вашем коде ошибка в условии, вот тут:
if (CheckMenu == MF_CHECKED)
нужно применить битовую опирацию OR. Код будет выглядеть так: