Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
||
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[3.14.142.115] |
|
Сообщ.
#1
,
|
|
|
Всем привет.
Столкнулся со следующей проблемой. Оказывается, что если в обработчике формы вызывать функцию MenuAddItem() до того, как будет получено событие menuOpenEvent, то получится следующая картина: щелкнули по FormTitle, началась обработка соответствующих событий (в том числе выполнилась функция MenuAddItem()), после чего событие menuOpenEvent уже не придет! Вызываю я ее так: Char *str = "-"; MenuAddItem(SomeMenuItem, NewSeparator, 0, str); После этого сепаратор добавляется в меню, но событие menuOpenEvent не приходит. Если эти строки закомментить, то событие menuOpenEvent получается моим обработчиком безо всяких проблем. Так вот вопрос, где же следует вызывать функцию MenuAddItem, если нужно менять пункты меню для каждой конкретной ситуации. ЗЫ: вызыв этой функции при обработке menuOpenEvent вообще не производит никакого эффекта. |
Сообщ.
#2
,
|
|
|
посмотрел свои старые исходники.
динамическое меню делал так: 1. ловим событие menuOpenEvent 2. в нем динамически добавляем в меню новый пункт MenuAddItem 3. ловим событие menuEvent. в нем обрабатываем кликнутый пункт EventType* _pEvent - входной параметр в функцию _pEvent->data.menu.itemID - индекс выбранного пункта то есть, в моем случае меню было модифицировано внутри обработчика menuOpenEvent. в твоем случае - внутри обработчика формы. если надо внутри обработчика формы, то попробуй там для начала получить активное меню MenuSetActiveMenu потом его модифицировать MenuAddItem потом снова его сделать активным MenuSetActiveMenu |
Сообщ.
#3
,
|
|
|
спасибо
|