11.16 - Сообщения, используемые меню

Windows сообщает о действии связанного меню, отправляя сообщения оконной процедуре окна, которое владеет меню. Windows отправляет ряд сообщений, когда пользователь выбирает пункты в строке меню или щелкает мышью по правой кнопке мыши, чтобы показать на экране вспомогательное меню.

Когда пользователь активизирует пункт в горизонтальном меню, окно владелец сначала получает сообщение WM_SYSCOMMAND. Это сообщение включает в себя флажок, который указывает, активизировал ли пользователь меню при помощи использования клавиатуры (SC_KEYMENU) или мыши (SC_MOUSEMENU). Для получения дополнительной информации об интерфейсе клавиатуры для меню, см. Доступ к меню через клавиатуру.

Затем, перед показом на экране любых меню, Windows посылает сообщение WM_INITMENU оконной процедуре так, чтобы прикладная программа могла изменить меню до того, как пользователь увидит их. Windows отправляет сообщение WM_INITMENU только однажды для активизации меню.

Когда пользователь указывает на пункт меню, который открывает подменю, Windows, отправляет окну владельцу сообщение WM_INITMENUPOPUP перед отображением на экране подменю. Это сообщение дает прикладной программе возможность изменить подменю прежде, чем оно покажется на экране.

Каждый раз, когда пользователь перемещает выделение от одного пункта меню к другому, Windows отправляет сообщение WM_MENUSELECT оконной процедуре окна владельца меню. Это сообщение идентифицирует текущий выбранный пункт меню. Многие из прикладных программ предоставляют информационную область внизу своих основных окон и используют это сообщение, чтобы показать на экране дополнительную информацию о выбранном пункте меню.

Когда пользователь выбирает командный пункт из меню, Windows отправляет оконной процедуре сообщение WM_COMMAND. Младшее слово параметра wParam сообщения WM_COMMAND содержит идентификатор выбранного пункта. Оконная процедура должна проверить идентификатор и обработать сообщение соответственно.

Не все меню являются доступными через строку меню окна. Многие из прикладных программ показывают на экране вспомогательное меню, когда пользователь щелкает мышью по правой кнопке мыши в конкретном месте. Такие прикладные программы, если это им свойственно, должны обрабатывать сообщение WM_CONTEXTMENU и показывать на экране вспомогательное меню. Если прикладная программа не показывает на экране вспомогательное меню, она должна передать сообщение WM_CONTEXTMENU функции DefWindowProc для обработки по умолчанию.


Предыдущий Шаг | Следующий Шаг | Оглавление
Автор Владимир Соковиков.