Окт 16

Быстрые клавиши

Быстрая клавиша (keyboard accelerator) — это клавиша или комбинация клавиш, которые при нажатии генерируют сообщение WM_COMMAND или WM_SYSCOMMAND.
Обычно быстрые клавиши дублируют пункты меню, предоставляя пользователю альтернативный способ вызова команд. На рис. 6.2 мы уже видели обозначения быстрых клавиш на полосе подменю File в окне приложения Visual Studio. Например, команду New пользователь может вызвать, либо выбрав пункт File ► New, либо нажав сочетание клавиш Ctrl+N. Очевидно, что второй способ быстрее.
Хотя традиционно быстрые клавиши являются эквивалентом пунктов-команд меню, они могут генерировать и такие команды, которых нет в меню.
Для многооконных приложений с множеством оконных процедур быстрые клавиши очень важны. Как известно, Windows посылает сообщения клавиатуры оконной процедуре того окна, которое в данный момент имеет фокус ввода. Однако при работе с быстрыми клавишами Windows посылает сообщение WM_COMMAND той оконной процедуре, чей дескриптор был передан функции TranslateAccelerator. Как правило, это будет оконная процедура главного окна приложения, то есть именно того окна, в котором расположено меню. Следовательно, нет необходимости дублировать логику обработки быстрых клавиш в каждой оконной процедуре.
Чтобы добавить в приложение обработку быстрых клавиш, нужно выполнить простую последовательность действий:
1. Модифицировать определение ресурса меню, добавив к имени каждого дублируемого пункта информацию о быстрой клавише.
2. Определить таблицу быстрых клавиш в файле описания ресурсов.
3. Обеспечить загрузку таблицы быстрых клавиш в память приложения.
4. Модифицировать цикл обработки сообщений в функции WinMain.