На этом шаге мы рассмотрим активизацию меню и выбор пункта меню.
e_InitMenu()
Событие e_InitMenu посылается тогда, когда меню должно быть активизировано. Это происходит, когда пользователь щелкает кнопкой мыши на пункте меню или нажимает кнопку меню, что позволяет приложению изменять выпадающее меню до того, как оно будет отображено на экране.
е_Menu(Menu_tag,integer ShiftCtrlAlt)
Когда пользователь выбирает какой-либо пункт меню, приложению посылается событие e_Menu. Параметр Menu_tag - это идентификатор константы, которая определяет выбранный пункт меню. Параметр ShiftControlAlt содержит состояние клавиш <Shift> и <Ctrl>, которые, возможно, были нажаты во время активизации пункта меню.
task_win_event_handler(Window,e_Menu(id_file_exit,ShiftCtrlAlt),0):-!, win_Destroy (Window)
Событие e_Menu посылается только окнам, содержащим меню. Если окно создано без меню, оно не будет получать событие e_Menu. На некоторых платформах имеются различные ограничения относительно меню для диалоговых или дочерних окон.
Командные кнопки панели инструментов также посылают события e_Menu обработчику событий окна.
Часто окна должны передавать неизвестные события окну Task для обработки по умолчанию обработчиком Task окна, например при работе с файлами, справочной системой и т. д. Код для этих действий автоматически вставляется экспертом кода для обработки событий e_Menu по умолчанию:
my_event_handler(W,e_Menu(ID,ShiftCtrlAlt),0):-!, PW=win_GetParent(W), win_SendEvent(PW,e_Menu(ID,ShiftCtrlAlt)).
На следующем шаге мы рассмотрим события от мыши.