Win32 API. Быстрые клавиши - Использование таблицы клавиш-ускорителей, созданной во время прогона программы
ОГЛАВЛЕНИЕ
Использование таблицы клавиш-ускорителей, созданной во время прогона программы
Win32 прикладной программный интерфейс (API) позволяет Вам создавать таблицы клавиш-ускорителей во время прогона программы. Шаги, включенные в создание и использование таблицы акселераторов во время прогона программы следующие:
Определение клавиш - ускорителей при помощи заполнения массива структур ACCEL, а затем создание таблицы клавиш-ускорителей, посредством передачи массива в функцию CreateAcceleratorTable.
Активизация таблицы клавиш-ускорителей и обработка сообщений WM_COMMAND, сгенерированных акселераторами.
Уничтожение таблицы клавиш-ускорителей прежде, чем прикладная программа закроется.
Создание таблицы клавиш-ускорителей
Первым шагом в создании таблицы клавиш-ускорителей во время прогона программы является заполнение массива структур ACCEL. Каждая структура в массиве определяет клавишу - ускоритель в таблице. Определение акселераторов включает в себя их флажки, их клавиши и их идентификаторы. Структура ACCEL имеет следующую форму.
typedef struct tagACCEL { // accl
BYTE fVirt;
WORD key;
WORD cmd;
} ACCEL;
Вы определяете нажатие клавиши - ускорителя, при помощи установки кода буквы ASCII или кода виртуальной клавиши в члене key структуры ACCEL. Если Вы определяете код виртуальной клавиши, Вы должны сначала включить флажок FVIRTKEY в члене fVirt; иначе, Windows поймет код как код буквы ASCII. Вы можете включить флажок FCONTROL, FALT или FSHIFT, или все три, чтобы комбинировать с нажатиями клавиш клавиши CTRL, ALT или SHIFT.
Чтобы создать таблицу клавиш-ускорителей, пошлите адрес массива структур ACCEL в функцию CreateAcceleratorTable. CreateAcceleratorTable создает таблицу клавиш-ускорителей и возвращает ее дескриптор.
Обработка клавиш-ускорителей
Процесс загрузки и вызова клавиш - ускорителей, предусмотренных их таблицей, созданной во время прогона программы, аналогичен обработке этих клавиш, предусмотренных ресурсом таблицы клавиш-ускорителей. Для получения дополнительной информации, см. со статьи Загрузка ресурса таблицы клавиш-ускорителей до статьи Обработка сообщения WM_COMMAND.
Разрушение таблицы клавиш-ускорителей
Перед тем, как прикладной программе закрыться, она должна уничтожить таблицы клавиш-ускорителей, созданные во время прогона программы. Вы можете уничтожить таблицу клавиш-ускорителей и удалить ее из памяти, путем посылки дескриптора таблицы в функцию DestroyAcceleratorTable.