Студопедия

Главная страница Случайная страница

Разделы сайта

АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника






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






 

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

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

 

ИмяТаблицы 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, поскольку в нем определены макроимена виртуальных клавиш.

 






© 2023 :: MyLektsii.ru :: Мои Лекции
Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав.
Копирование текстов разрешено только с указанием индексируемой ссылки на источник.