Вы создаете ресурс таблицы клавиш-ускорителей, используя оператор ACCELERATORS в файле определения ресурса вашего приложения. Вы должны назначить имя или идентификатор ресурса таблицы клавиш-ускорителей, желательно не похожий на любой другой ресурс. Система использует этот идентификатор, чтобы загрузить ресурс во время выполнения программы.
Каждый ускоритель, который Вы определяете, требует отдельной записи в таблице клавиш-ускорителей. В каждой записи, Вы определяете нажатие клавиш (или код символа ASCII, или код виртуальной клавиши), который создает ускоритель и идентификатор ускорителя. Вы должны также установить и то, должно ли нажатие клавиши использоваться в некоторых комбинациях с клавишами ALT, SHIFT или CTRL. Дополнительную информацию о виртуальных клавишах, см. главу Ввод данных с клавиатуры.
Нажатие клавиши ASCII определяется, или заключением символа ASCII в двойные кавычки, или использованием целочисленного значения символа в комбинации с флажком ASCII. Примеры ниже показывают, как определить ускорители ASCII.
"A", ID_ACCEL1 ; SHIFT+A 65, ID_ACCEL2, ASCII ; SHIFT+A |
Нажатие клавиши виртуальной кодом определяется по-другому, в зависимости от того, является ли нажатая клавиша алфавитно-цифровой клавишей или не алфавитно-цифровой. Алфавитно-цифровые клавиши, клавиши буквы или цифры, заключенные в двойные кавычки, объединяются с флажком VIRTKEY. Не алфавитно-цифровые клавиши, код виртуальной клавиши для конкретной клавиши объединяется с флажком VIRTKEY. Примеры ниже показывают, как определить ускорители кода виртуальной клавиши.
"a", ID_ACCEL3, VIRTKEY ; A (клавиша фиксации ; заглавных букв вкл.) или a VK_INSERT, ID_ACCEL4, VIRTKEY ; клавиша INSERT |
Пример ниже показывает ресурс таблицы клавиш-ускорителей, который определяет ускорители для файловых операций. Имя ресурса - FileAccel.
FileAccel ACCELERATORS BEGIN VK_F12, IDM_OPEN, CONTROL, VIRTKEY ; CTRL+F12 VK_F4, IDM_CLOSE, ALT, VIRTKEY ; ALT+F4 VK_F12, IDM_SAVE, SHIFT, VIRTKEY ; SHIFT+F12 VK_F12, IDM_SAVEAS, VIRTKEY ; F12 END |
Если Вы хотите, чтобы пользователь нажал клавишу ALT, SHIFT или CTRL в некоторой комбинации с нажатием клавиши ускорителя, установите клавишу ALT, SHIFT и флажки клавиши CONTROL в определении ускорителя. Ниже приведены некоторые примеры.
"B", ID_ACCEL5, ALT ; ALT_SHIFT+B "I", ID_ACCEL6, CONTROL, VIRTKEY ; CTRL+I VK_F5, ID_ACCEL7, CONTROL, ALT, VIRTKEY ; CTRL+ALT+F5 |
По умолчанию, когда акселератор соответствует пункту меню, система выделяет пункт меню. Вы можете использовать флажок NOINVERT, чтобы воспрепятствовать выделению на экране для отдельного ускорителя. Пример ниже показывает, как использовать флажок NOINVERT:
VK_DELETE, ID_ACCEL8, VIRTKEY, SHIFT, NOINVERT ; SHIFT+DELETE |
Чтобы определять ускорители, которые соответствуют пунктам меню в вашем приложении, включите ускорители в текст пунктов меню. Пример ниже показывает, как включить ускорители в текст пункта меню в файле определения ресурса.
FilePopup MENU BEGIN POPUP "&File" BEGIN MENUITEM "&New..", IDM_NEW MENUITEM "&Open\tCtrl+F12", IDM_OPEN MENUITEM "&Close\tAlt+F4" IDM_CLOSE MENUITEM "&Save\tShift+F12", IDM_SAVE MENUITEM "Save &As...\tF12", IDM_SAVEAS END END |