- •Глава 10 Меню и быстрые клавиши
- •Структура меню
- •Шаблон меню
- •Ссылки на меню в вашей программе
- •Меню и сообщения
- •Образец программы
- •Этикет при организации меню
- •Сложный способ определения меню
- •Третий подход к определению меню
- •Независимые всплывающие меню
- •Использование системного меню
- •Изменение меню
- •Другие команды меню
- •Нестандартный подход к меню
- •Использование в меню битовых образов
- •Два способа создания битовых образов для меню
- •Контекст памяти
- •Создание битового образа, содержащего текст
- •Масштабирование битовых образов
- •Соберем все вместе
- •Добавление интерфейса клавиатуры
- •Быстрые клавиши
- •Зачем нужны быстрые клавиши?
- •Некоторые правила назначения быстрых клавиш
- •Загрузка таблицы быстрых клавиш
- •Преобразование нажатий клавиш клавиатуры
- •Получение сообщений быстрых клавиш
- •Программа poppad, имеющая меню и быстрые клавиши
- •Разрешение пунктов меню
- •Обработка опций меню
Некоторые правила назначения быстрых клавиш
Теоретически можно определить быструю клавиши почти для каждой виртуальной или символьной клавиши в сочетании с клавишами <Shift>, <Ctrl> или <Alt>. Однако надо попытаться добиться какого-то соответствия с другими приложениями и избегать применения тех клавиш, которые использует Windows. Нежелательно назначать быстрыми клавишами клавиши <Tab>, <Enter>, <Esc>, <Spacebar>, поскольку они часто используются для системных функций.
Наиболее часто с быстрыми клавишами работают в меню Edit. Рекомендуемые быстрые клавиши для этих пунктов меню различаются у версий Windows 3.0 и Windows 3.1, поэтому следует обеспечить поддержку как старых, так и новых быстрых клавиш, показанных в следующей таблице:
Функция |
Быстрые клавиши старые |
Быстрые клавиши новые |
Undo (отменить) |
<Alt>+<Backspace> |
<Ctrl>+<Z> |
Cut (вырезать) |
<Shift>+<Del> |
<Ctrl>+<X> |
Copy (копировать) |
<Ctrl>+<Ins> |
<Ctrl>+<C> |
Paste (вставить) |
<Shift>+<Ins> |
<Ctrl>+<V> |
Delete или Clear (удалить или очистить) |
<Del> |
<Del> |
Другой известной быстрой клавишей является клавиша <F1> для вызова подсказки. Избегайте применения клавиш <F4>, <F5> и <F6>, поскольку они часто используются для специальных функций многооконного интерфейса приложений (Multiple Document Interface, MDI), о котором рассказывается в главе 18.
Таблица быстрых клавиш
Быстрые клавиши определяются в файле описания ресурсов (файл с расширением .RC). Здесь показана общая форма определения:
MyAccelerators ACCELERATORS
{
[определения быстрых клавиш]
}
Эта таблица быстрых клавиш называется MyAccelerators. В таблицу ACCELERATORS не включаются опции загрузки и памяти. В файле описания ресурсов можно иметь несколько таблиц ACCELERATORS.
Для каждой определяемой быстрой клавиши необходима отдельная строка таблицы. Имеется четыре типа определений быстрых клавиш:
"char", id [,<SHIFT>] [,CONTROL] [,<ALT>]
"^char", id [,<SHIFT>] [,CONTROL] [,<ALT>]
nCode, id, ASCII [,<SHIFT>] [,CONTROL] [,<ALT>]
nCode, id, VIRTKEY [,<SHIFT>] [,CONTROL] [,<ALT>]
В этих примерах "char" означает один символ, заключенный в кавычки, а "^char" — это символ ^ и один символ, заключенный в кавычки. Число id выполняет ту же функцию, что и идентификатор меню в определении меню. Это значение, которое Windows посылает вашей оконной процедуре в сообщении WM_COMMAND для идентификации быстрой клавиши. Обычно эти идентификаторы определяются в заголовочном файле. Быстрые клавиши почти всегда служат для выбора опций из всплывающих меню. Если быстрая клавиша дублирует команду меню, используйте один и тот же идентификатор для меню и для быстрой клавиши. Если быстрая клавиша не дублирует команду меню, используйте уникальный идентификатор.
В первом типе определения идентификатора быстрая клавиша — это чувствительный к регистру символ в кавычках:
"char", id [,<SHIFT>] [,CONTROL] [,<ALT>]
Если вы хотите использовать эту клавишу в сочетании с одной или более клавишами <Shift>, <Ctrl> и <Alt>, просто добавьте SHIFT, CONTROL и/или ALT.
В определении второго типа быстрая клавиша — это символ в сочетании с клавишей <Ctrl>:
"^char", id [,<SHIFT>] [,CONTROL] [,<ALT>]
Этот тип определения эквивалентен первому, если бы в нем за символом было бы указано ключевое слово CONTROL.
В определениях третьего и четвертого типов вместо символа в кавычках используется число (nCode):
nCode, id, ASCII [,<SHIFT>] [,CONTROL] [,<ALT>]
nCode, id, VIRTKEY [,<SHIFT>] [,CONTROL] [,<ALT>]
Это число интерпретируется либо как чувствительный к регистру ASCII-код символа, либо как код виртуальной клавиши, в зависимости от наличия ключевого слова ASCII или VIRTKEY.
Наиболее часто используются определения быстрых клавиш второго и четвертого типа. В определении второго типа буквенная клавиша используется в сочетании с клавишей <Ctrl>. Например, здесь определяется быстрая клавиша <Ctrl>+<A>:
"^A", id
Определение четвертого типа используется для виртуальных кодов клавиш, таких как функциональные клавиши. Для комбинации <Ctrl>+<F9> используется следующее определение:
VK_F9, wid, VIRTKEY, CONTROL
Идентификатор VK_F9 определяется в заголовочных файлах Windows в качестве виртуального кода клавиши <F9>, поэтому, вы должны включить в программу в начале файла описания ресурсов инструкцию:
#include <windows.h>
Приведенные выше определения первого и третьего типов применяются редко. Если вы хотите их использовать, внимательно контролируйте чувствительность к регистру. Windows осуществляет чувствительный к регистру контроль совпадения "char" или nCode, основываясь на нажатой клавише. Если вы добавляете ключевое слово SHIFT, Windows контролирует, нажата или нет клавиша <Shift>. Эта ситуация иногда приводит к неожиданному результату. Например, если "char" — это "А", то быстрая клавиша срабатывает, если нажата клавиша <А> или при нажатой клавише <Shift> или при включенном режиме Caps Lock. Если вы используете "А" с ключевым словом SHIFT, то быстрая клавиша активизируется, если нажата клавиша <А> при нажатой клавише <Shift>, но не должна вызываться при включенном режиме Caps Lock. Точно также "а" — сама по себе является быстрой клавишей для клавиши <А> нижнего регистра или для клавиши <А> с нажатой клавишей <Shift> и включенном режиме Caps Lock. Но "а" с ключевым словом SHIFT является быстрой клавишей только в одном случае, если клавиша <Shift> нажата, а Caps Lock включен.
При определении быстрых клавиш для пунктов меню необходимо включить описание комбинации быстрых клавиш в текст соответствующего пункта меню. Символ табуляции (\t) разделяет текст и описание быстрой клавиши так, чтобы описание быстрых клавиш располагалось во втором столбце. При наличии слов Shift, Ctrl или Alt после них пишется знак плюс и собственно клавиша. Например:
F6
Shift+F6
Ctrl+F6
