В проекте doc/view с использованием VS2008 MFCMenuBar, похоже, загружает из проекта правильный ресурс МЕНЮ (IDR_MAINFRAME), поскольку добавление и удаление пунктов меню отражается в пользовательском интерфейсе меню. Он даже добавляет ускорители в пункты меню по умолчанию (например, Ctrl + O в элемент Open ...). Однако таблица ускорителя (IDR_MAINFRAME), похоже, не подключена к меню. Изменение значения по умолчанию Ctrl + O для Open ... на что-то вроде Ctrl + 7 не работает. Ctrl + O по-прежнему добавляется в пункт меню Open ..., а Ctrl + O все еще вызывает обработчик Open .... В файле ресурсов есть только одна таблица ускорителей, поэтому я не знаю, где CMFCMenuBar получает информацию о ускорителе.Почему CMFCMenuBar не использует таблицу ускорителей?
На этом этапе я смог заставить ускорители работать, вручную загрузив таблицу ускорителей IDR_MAINFRAME и сам переведя сообщения. Но CMFCMenuBar все еще добавляет ускорители по умолчанию.
Может ли кто-нибудь объяснить, что здесь происходит? Как я могу заставить MFCMenuBar использовать мою таблицу ускорителей и либо не добавлять ускорители, либо добавлять правильные ускорители?
У меня была такая же проблема с CDockablePane, которая не использовала недавно обновленную таблицу ускорителей. Устранение проблемы HKCU \ Software \ \ . Я думаю, что то же самое поможет CMFCMenuBar. –
2010-02-01 14:37:00
это немного кувалдой. Опция выше с ResetAll() лучше. –