НI WORD (wPa ram) - сочетание битовых флагов, в которых хранятся свойства и состояние пункта. Для первого из сообщений это код 0x8090, который является сочетанием флагов MF_MOUSESELECT, MF_HILITE и MF_P0PUP, указывающих, что пункт выбран мышью, выделен цветом и что этот пункт является подменю;
1 Pa ram - дескриптор подменю, в которое входит выделенный пункт. При первом вызове в нем будет храниться дескриптор основного меню.
О WM_INITMENUPOPUP. Это сообщение приходит при выборе подменю до начала его рисования. Оно применяется для передачи в параметре 1 Pa ram дескриптора выбранного подменю. В wParam хранится позиция пункта. После этого подменю рисуется, обработчику окна подменю больше нечего делать, и он «засыпает», ожидая сообщений.
О WM_ENTERIDLE. Этим сообщением приложение извещается о том, что обработчик меню перешел в пассивное состояние. Параметр wParam содержит константу MSGF_MENU, указывающую, что сообщение WM_ENTERIDLE пришло из окна подменю. В параметре 1 Pa ram находится дескриптор HWND окна подменю. Это дает возможность запомнить его и посылать программные сообщения назад, в оконную процедуру подменю, имитируя работу внешних устройств. Сообщение WM_ENTERIDLE будет приходить при каждом выходе из оконной процедуры подменю и переходе диалога в пассивное состояние.
При последующем перемещении мыши на очередной терминальный пункт будут поступать новые сообщения WM_MENUSELECT. Каждый раз параметр 1 Param будет содержать команду меню, соответствующую выделенному цветом пункту.
При щелчке мышью на выбранном терминальном пункте меню передаст приложению серию сообщений WMJJNINITMENUPOPUP, WM_CAPTURECHANGED, WM_MENUSELECT и WM__EXITMENULOOP, которые сопровождают процесс закрытия окна подменю, потери окном подменю фокуса ввода от мыши и возвращения фокуса ввода окну приложения.
Создание и использование меню
Последним в окно приложения придет уже знакомое нам сообщение WMCOMMAND.
Эти дополнительные сообщения могут использоваться для отображения подсказки при перемещении мыши на новый терминальный пункт.