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

Вы создаете ресурс таблицы клавиш-ускорителей, используя оператор ACCELERATORS в файле определения ресурса вашей прикладной программы. Вы должны присвоить имя или идентификатор ресурсу таблицы клавиш-ускорителей, желательно не похожий на идентификатор или имя какого-либо другого ресурса. Windows использует этот идентификатор, чтобы загрузить ресурс во время прогона программы.

Каждая клавиша - ускоритель, которую Вы определяете, требует отдельного элемента в таблице клавиш-ускорителей. В каждом элементе, Вы определяете нажатие клавиши (или код символа ASCII или код виртуальной клавиши), который создает клавишу - ускоритель и ее идентификатор. Вы должны также определить, должно ли нажатие клавиши быть использовано в некоторой комбинации с клавишами ALT, SHIFT или CTRL. Для получения дополнительной информации о виртуальных клавишах, см. статью Ввод с клавиатуры.

Нажатие клавиши ASCII определяется или заключением символа ASCII в двойные кавычки или при помощи использования целочисленного значения символа в комбинации с флажком ASCII. Следующие примеры показывают, как определять клавиши - ускорители ASCII.

"A", ID_ACCEL1         ; SHIFT+A
65,  ID_ACCEL2, ASCII  ; SHIFT+A

Нажатие клавиши с виртуальным кодом определяется, по-другому и зависит от того, является ли нажатая клавиша алфавитно-цифровой клавишей или не алфавитно-цифровой. Для алфавитно-цифровой клавиши, символ клавиши или число, заключается в двойные кавычки, объединяется с флажком VIRTKEY. Для не алфавитно-цифровой клавиши, виртуальный Windows код для заданной клавиши объединяется с флажком 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

По умолчанию, когда клавиша - ускоритель соответствует пункту меню, Windows подсвечивает пункт меню. Вы можете использовать флажок 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

Предыдущий Шаг | Следующий Шаг | Оглавление
Автор Владимир Соковиков - 03.07.2002