Отправляет email-рассылки с помощью сервиса Sendsay
  Все выпуски  

RusFAQ.ru: Win API


РАССЫЛКИ ПОРТАЛА RUSFAQ.RU

/ КОМПЬЮТЕРЫ И ПО / Языки программирования / WinAPI

Выпуск № 436
от 21.06.2007, 20:05

Администратор:Калашников О.А.
В рассылке:Подписчиков: 412, Экспертов: 45
В номере:Вопросов: 1, Ответов: 1


Вопрос № 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. Код будет выглядеть так:

if (!(CheckMenu & MF_CHECKED))
    CheckMenuItem(hPopupMenu, 1, MF_CHECKED );
else
    CheckMenuItem(hPopupMenu, 1, MF_UNCHECKED );

В MSDN даже экзампл есть, правда применительно к кастом чекмаркам, но суть та же.

Удачи.
---------
Если в сердце дверь закрыта, нужно в печень постучаться
Ответ отправил: Jadd (статус: Профессионал)
Адрес: Санкт-Петербург
WWW: http://www.sport-diary.ru
----
Ответ отправлен: 16.06.2007, 16:00


Отправить вопрос экспертам этой рассылки

Приложение (если необходимо):

* Код программы, выдержки из закона и т.п. дополнение к вопросу.
Эта информация будет отображена в аналогичном окне как есть.

Обратите внимание!
Вопрос будет отправлен всем экспертам данной рассылки!

Для того, чтобы отправить вопрос выбранным экспертам этой рассылки или
экспертам другой рассылки портала RusFAQ.ru, зайдите непосредственно на RusFAQ.ru.


Форма НЕ работает в почтовых программах The BAT! и MS Outlook (кроме версии 2003+)!
Чтобы отправить вопрос, откройте это письмо в браузере или зайдите на сайт RusFAQ.ru.


© 2001-2007, Портал RusFAQ.ru, Россия, Москва.
Авторское право: ООО "Мастер-Эксперт Про"
Email: support@rusfaq.ru, тел.: +7 (926) 535-23-31
Хостинг: "Московский хостер"
Поддержка: "Московский дизайнер"
Авторские права | Реклама на портале
Версия системы: 4.52 от 02.05.2007
Яндекс Rambler's Top100
RusFAQ.ru | MosHoster.ru | MosDesigner.ru | RusIRC.ru
Kalashnikoff.ru | RadioLeader.ru | RusFUCK.ru

В избранное