Прототип: Имя таблицы ACCELERATORS
{ Key1, MenuID1, [тип], [опции] Key2, MenuID1, [тип], [опции] Key1, MenuID1, [тип], [опции] и.т.д. }
Имя таблицы - Определяет имя таблицы. Key - Задает клавишу выбора элемента меню. MenuID - Содержит идентификатор требуемого элемента. Тип - Определяет, является ли клавиша стандартной (значение по умолчанию) или виртуальной.
Опции:
Если в качестве параметра 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_x VIRTKEY, 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_TIME 500
Загрузка таблицы клавиш быстрого доступа происходит с помощью функции: CONTROL LoadAccelTable( ). Она имеет такой прототип:
BOOL CFrameWnd::LoadAccelTable(LPCSTR lpszName);
Вот загрузка в конструкторе окна:
if(!LoadAccelTable("MYMENU")) MessageBox("Не могу загрузить акселераторы");
Материал прислал Dmitry (astra@mail.iks.ru)