Получение сообщений быстрых клавиш
Если быстрая
клавиша связана с пунктом системного
меню, функция TranslateAccelerator
посылает оконной процедуре
сообщение WM_SYSCOMMAND.
В противном случае функция
TranslateAccelerator
посылает
оконной процедуре сообщение
WM_COMMAND. В
следующей таблице показаны типы сообщений
WM_COMMAND,
которые можно получить для быстрых
клавиш, команд меню и дочерних окон
управления:
|
Младшее слово
(LOWORD)
(wParam)
|
Старшее слово
(HIWORD)
(wParam)
|
IParam
|
Быстрая
клавиша:
|
Идентификатор
быстрой клавиши
|
1
|
0
|
Меню:
|
Идентификатор
меню
|
0
|
0
|
Элемент
управления:
|
Идентификатор
элемента управления
|
Код уведомления
|
Описатель
дочернего окна
|
Кроме этого, если
быстрая клавиша соответствует пункту
меню, оконная процедура получает
сообщения
WM_NITMENU, WM_NITMENUPOPUP и
WM_MENUSELECT
точно также, как при выборе опции меню.
Обычно, в программах при обработке
сообщений
WM_INITMENUPOPUP
делают разрешенными и запрещенными
пункты всплывающих меню. При работе с
быстрыми клавишами эта возможность
по-прежнему имеется. Однако если быстрая
клавиша соответствует запрещенному
или недоступному пункту меню, то функция
TranslateAccelerator
не посылает оконной процедуре сообщение
WM_COMMAND или
WM_SYSCOMMAND.
При сворачивании
активного окна для быстрых клавиш,
соответствующих разрешенным пунктам
системного меню, функция
TranslateAccelerator
посылает оконной процедуре сообщения
WM_SYSCOMMAND, а
не сообщения WM_COMMAND.
Кроме того, функция
TranslateAccelerator
посылает оконной процедуре сообщения
WM_COMMAND для
быстрых клавиш, которые не соответствуют
ни одному из пунктов меню.