In einem doc/view-Projekt mit VS2008 scheint eine MFCMenuBar die richtige MENU-Ressource (IDR_MAINFRAME) aus dem Projekt zu laden, da das Hinzufügen und Entfernen von Menüelementen in der Benutzeroberfläche des Menüs widergespiegelt wird. Es fügt sogar die Beschleuniger an die Standardmenüpunkte an (z. B. Strg + O an das Element Öffnen ...). Die Beschleunigungstabelle (IDR_MAINFRAME) scheint jedoch nicht mit dem Menü verbunden zu sein. Das Ändern von Strg + O für Öffnen ... zu etwas wie Strg + 7 funktioniert nicht. Die Strg + O-Taste wird immer noch an den Menüpunkt Öffnen ... angehängt, und Strg + O ruft immer noch den Open ... -Handler auf. Es gibt nur eine Beschleunigertabelle in der Ressourcendatei, daher habe ich keine Ahnung, wo die CMFCMenuBar ihre Beschleunigerinformationen erhält.Warum verwendet CMFCMenuBar die Beschleunigungstabelle nicht?
An diesem Punkt konnte ich die Beschleuniger arbeiten, indem ich manuell die IDR_MAINFRAME-Beschleuniger-Tabelle geladen und Nachrichten selbst übersetzt habe. Die CMFCMenuBar fügt jedoch weiterhin die Standardbeschleuniger hinzu.
Kann mir jemand erklären, was hier vor sich geht? Wie kann ich die MFCMenuBar zwingen, meine Accelerator-Tabelle zu verwenden und entweder die Accelerators nicht anzuhängen oder die richtigen Accelerators anzuhängen?
Ich hatte das gleiche Problem mit einem CDockablePane, das eine kürzlich aktualisierte Accelerator-Tabelle nicht verwendet. Durch das Löschen von HKCU \ Software \ \ wurde das Problem behoben. Ich denke, dass das gleiche für CMFCMenuBar helfen würde. –
das ist ein bisschen wie ein Vorschlaghammer. Die obige Option mit ResetAll() ist besser. –