Создание ресурса таблицы клавиш-ускорителей


Вы создаете ресурс таблицы клавиш-ускорителей, используя оператор 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 

Назад в оглавление
На главную страницу

Hosted by uCoz