Окт 16

Сообщения меню

Система Windows посылает сообщение WM_COMMAND при каждом выборе пункта меню, определяющего команду. Обычно это единственное сообщение, обрабатываемое приложением, которое может поступить от меню. При выборе пунктов системного меню вместо указанного сообщения отправляется сообщение WM_SYSCOMMAND.
Иногда в программе может потребоваться обработка сообщений WM_INITMENU и WM_INITMENUPOPUP. Они отправляются непосредственно перед активизацией главного меню или всплывающего меню. Эти сообщения позволяют приложению изменить меню перед тем, как оно будет отображено на экране.
Сообщение WM_MENUCHAR отправляется, если пользователь пытается использовать клавиатурную «горячую» клавишу, которая не соответствует ни одному из мнемонических символов меню. Это позволяет обрабатывать несколько «горячих» клавиш для одного пункта меню или отображать сообщение об ошибке.
При навигации по меню система отправляет также сообщение WM_MENUSELECT. Оно более универсально по сравнению с WM_COMMAND, так как инициируется даже тогда, когда выделен недоступный или запрещенный пункт. Это сообщение может использоваться для формирования контекстной справки меню, которая отображается в строке состояния приложения.
В большинстве программ все сообщения от меню, кроме WM_COMMAND, передаются на обработку в функцию DefWindowProc.