Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
System programming / Конспект лекций / Лекция 9 Ресурсы часть 3.doc
Скачиваний:
44
Добавлен:
08.05.2015
Размер:
49.15 Кб
Скачать

Получение сообщений быстрых клавиш

Если быстрая клавиша связана с пунктом системного меню, функция 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 для быстрых клавиш, которые не соответствуют ни одному из пунктов меню.