![]() Главная страница Случайная страница КАТЕГОРИИ: АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника |
Включение акселераторов сменю
Прежде чем закончить разговор о меню, следует упомянуть еще об одной возможности, связанной с ними. Это акселераторные клавиши, или акселераторы. Акселераторные клавиши – клавиатурные комбинации, которые Вы можете определить и которые, будучи нажаты, автоматически выбирают соответствующие им команды меню даже в том случае, когда меню не активно и не отображается. Иначе говоря, при помощи акселератора можно выбирать соответствующий элемент меню, не обращаясь к самому меню. Термин акселератор является довольно точным, поскольку ввод команд с использованием таких клавиш осуществляется гораздо быстрее, чем активизация меню и выбор этих команд. Для определения акселераторов необходимо добавить таблицу акселераторов в файл ресурсов. Все определения акселераторов имеют следующий общий вид:
ИмяТаблицы ACCELERATORS { Клавиша1, MenuID1 [, тип] [, параметр] Клавиша2, MenuID2 [, тип] [, параметр] Клавишаn, MenuIDn [, тип] [, параметр] }
Здесь:
Клавиша может быть символом в кавычках, либо целочисленным десятичным 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, поскольку в нем определены макроимена виртуальных клавиш.
|