Включение акселераторов сменю




 

Прежде чем закончить разговор о меню, следует упомянуть еще об одной возможности, связанной с ними. Это акселераторные клавиши, или акселераторы. Акселераторные клавиши – клавиатурные комбинации, которые Вы можете опреде­лить и которые, будучи нажаты, автоматически выбирают соответствующие им команды меню даже в том случае, когда меню не активно и не отображается. Иначе говоря, при помощи акселератора можно выбирать соответствующий элемент меню, не обращаясь к самому меню. Термин акселератор является довольно точным, поскольку ввод команд с использованием таких клавиш осуществляется гораздо быстрее, чем активизация меню и выбор этих команд.

Для определения акселераторов необходимо добавить таблицу акселераторов в файл ресурсов. Все определения акселераторов имеют следующий общий вид:

 

ИмяТаблицы ACCELERATORS

{

Клавиша1, MenuID1 [,тип] [,параметр]

Клавиша2, MenuID2 [,тип] [,параметр]

Клавишаn, MenuIDn [,тип] [,параметр]

}

 

Здесь:

ИмяТаблицы – является именем таблицы акселераторов;
Клавиша – определяет клавишу или комбинацию клавиш акселератора;
MenuID – это иденти­фикатор элемента меню;
Тип – указывает, является ли клавиша стандартной (по умолчанию) или виртуальной (ниже это понятие будет определено);
Параметр – может быть одним из следующих макросов: NOINVERT, ALT, SHIFT и CONTROL. Наличие NOINVERT означает, что соответствующий элемент меню при использовании аксе­лератора не будет подсвечен, даже если он присутствует на экране. Значение ALT указывает, что должна быть дополнительно нажата клавиша [Alt], а SHIFT и CONTROL специ­фицируют дополнительное нажатие клавиш [Shift] и [Ctrl].

 


Клавиша может быть символом в кавычках, либо целочисленным десятичным ASCII-кодом символа, либо виртуальной клавишей. Если указывается символ в кавычках, предполагается использование ASCII-символа. Если используется деся­тичное число, следует уточнить, что это код ASCII-символа, задав тип как ASCII. Если предполагается использование виртуальной клавиши, тип должен быть VIRTKEY.

Когда Клавиша представлена символом верхнего регистра в кавычках, соответствующая команда меню будет вызвана только в том случае, когда пользователь нажмет [Shift] вместе с указанной клавишей.

Если Клавиша представлена символом нижнего регистра, соответствующая команда меню будет вызвана только при нажатии заданной клавиши. В том случае, если Клавиша представлена символом нижнего регистра и задан параметр ALT, для вызова соответствующей команды необходимо нажать [Alt] и указанный символ, а если задан символ верхнего регистра и ALT, то для вызова команды нужно вместе с заданной клавишей нажимать [Shift] и [Alt]. Наконец, если требуется, чтобы для вызова команды использовалась комбинация [Ctrl+символ], символ в кавычках должен предваряться знаком ^.

Виртуальная клавиша – это системно-независимый код, определенный для основ­ного набора служебных клавиш. Виртуальные клавиши включают определения функциональных клавиш [F1] ¸ [F12], стрелок и других не ASCII-клавиш. Они определены как макроимена в файле Windows.h. Все эти макроимена начинаются с VK_. Например, имена макросов для функциональных клавиш можно узнать из файла Windows.h. Для того чтобы использовать виртуальную клавишу как акселератор, нужно просто указать ее макроимя, а тип должен быть VIRTKEY. Можно также использовать ALT, SHIFT и CONTROL для задания соответствующих комбинаций клавиш.

Вот некоторые примеры:

"A", IDM_x // нажатие [Shift-A]

"a", IDM_x // нажатие а

"^А", IDM_x // нажатие [Ctrl-A]

"a", IDM_x, ALT // нажатие [Alt-A]

VK_F2, IDM_x // нажатие [F2]

VK_F2, IDM_x, SHIFT // нажатие [Shift-F2]

 

Вот как выглядит файл Menu.rc из предыдущего раздела с добавленной таблицей акселераторов:

 

// Пример файла ресурсов, описывающего меню

#include <Windows.h>

#include "Menu.h"

MYMENU MENU

{

POPUP "&Раз"

{

MENUITEM "&Альфа\tF2", IDM_ALPHA

MENUITEM "&Бета\tF3", IDM_BETA

}

POPUP "&Два"

{

MENUITEM "&Гамма\tShift+Г", IDM_GAMMA

POPUP "&Дельта"

{

MENUITEM "&Эпсилон\tCtrl+E", IDM_EPSILON

MENUITEM "&3ета\tCtrl+Z", IDM_ZETA

}

MENUITEM "&Эта\tCtrl+F4", IDM_ETA

MENUITEM "&Тэта\tF5", IDM_THETA

}

MENUITEM "&Помощь", IDM_HELP

}

// Определение акселераторов

MYMENU ACCELERATORS

{

VK_F2, IDM_ALPHA, VIRTKEY

VK_F3, IDM_BETA, VIRTKEY

"Г", IDM_GAMMA

"^Е", IDM_EPSILON

"^Z", IDM_ZETA

VK_F4, IDM_ETA, VIRTKEY, CONTROL

VK_F5, IDM_THETA, VIRTKEY

VK_F1, IDM_HELP, VIRTKEY

}

 

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

 



Поделиться:




Поиск по сайту

©2015-2024 poisk-ru.ru
Все права принадлежать их авторам. Данный сайт не претендует на авторства, а предоставляет бесплатное использование.
Дата создания страницы: 2017-03-31 Нарушение авторских прав и Нарушение персональных данных


Поиск по сайту: