Прототип: Имя таблицы ACCELERATORS { Key1, MenuID1, [тип], [опции] Key2, MenuID1, [тип], [опции] Key1, MenuID1, [тип], [опции] и.т.д. }
Имя таблицы - Определяет имя таблицы. Key - Задает клавишу выбора элемента меню. MenuID - Содержит идентификатор требуемого элемента. Тип - Определяет, является ли клавиша стандартной (значение по умолчанию) или виртуальной. Опции: - NOINVERT
- При нажатии клавиши быстрого доступа выделенный элемент меню не будет выделен другим цветом.
- ALT
- Дополнительно должна быть нажата клавиша ALT.
- SHIFT
- Дополнительно должна быть нажата клавиша SHIFT.
- CONTROL
- Дополнительно должна быть нажата клавиша CONTROL.
- ASCII
- Значение Key может быть либо символ в кавычках, либо ASCII-код клавиши (или виртуальной клавиши). Если задан символ в кавычках, то подразумевается, что это ASCII-символ. Если задано целое значение, то необходимо явно указать компилятору ресурсов, что это ASCII-код, определяя параметр тип равным ASCII.
- VIRTKEY
- Если вышеперечисленное относится к виртуальной клавише, то параметр тип должен иметь значение VIRTKEY.
Если в качестве параметра Key дана заглавная литера в кавычках, то соответствующий пункт меню будет выбран при одновременном нажатии указанной клавиши и клавиши SHIFT. Если указан строчный символ, то для выбора пункта меню достаточно нажать саму клавишу. При задании строчного символа и опции ALT, необходимо одновременно с символом нажать ALT. (Если указан заглавный символ и опция ALT, то дополнительно нужно будет нажать и ALT, и SHIFT.) И наконец, если пользователь должен нажимать клавишу CTRL, то перед символом нужно поставить знак ^. Все константы виртуальных клавиш определены в файле afxres.h и начинаются с префикса VK_. Ниже примеры "A",IDM_xВыбор по нажатию [Shift-A] "a",IDM_xВыбор по нажатию [a] "^a",IDM_xВыбор по нажатию [Ctrl-a] "a",IDM_x,ALTВыбор по нажатию [Alt-a] VK_F2,IDM_x,VIRTKEYВыбор по нажатию [F2] VK_F2,IDM_xVIRTKEY, SHIFTВыбор по нажатию [Shift-F2]
Пример создания: Создание меню и идентификаторов находится на другой стороне листа. Отличие в том, что в определения меню нужно добавить обозначения клавиш быстрого доступа. Например: MENUITEM "&Alpha", IDM_ALPHA а MENUITEM "&Alpha\tF2", IDM_ALPHA
Здесь \t - Это символ горизонтальной табуляции, а F2 - это подсказка в меню о горячей клавише. MYMENU ACCELERATORS { VK_F2,IDM_ALPHA,VIRTKEY VK_F3,IDM_BETA,VIRTKEY "G",IDM_GAMMA "^E",IDM_EPSILON "^Z",IDM_ZETA VK_F4,IDM_ETA,VIRTKEY, VK_F5,IDM_THETA,VIRTKEY VK_F1,IDM_HELP,VIRTKEY "^T",IDM_TIME }
Здесь "^T", IDM_TIME - не относится к меню, а в файл ID.H следует добавить идентификатор. Например: #define IDM_TIME500 Загрузка таблицы клавиш быстрого доступа происходит с помощью функции: CONTROL LoadAccelTable( ). Она имеет такой прототип: BOOL CFrameWnd::LoadAccelTable(LPCSTR lpszName);
Вот загрузка в конструкторе окна: if(!LoadAccelTable("MYMENU")) MessageBox("Не могу загрузить акселераторы");
|