2010年05月12日
CMFCMenuBar のかなり酷い不具合
MFC アプリケーションのメニューを実装する際に使われる CMFCMenuBar には、かなり酷い不具合があるようです。
Visual Studio デベロッパー センター > Visual Studio フォーラム > Visual C++ > CMFCMenuBarとアクセラレータ
Visual C++ Developer Center > Visual C++ Forums > Visual C++ General > Missing HotKey in using CMFCMenuBar
会社の先輩がハマったという話を聞き、いつか自分も MFC アプリを作る時にハマるかもしれないのでメモしておきます。
上記日本語サイトの、自前で勝手にレジストリに保存されてしまったアクセラレータを消すというハックの他に、そもそも CKeyboardManager を初期化しない(そうすれば当然、勝手に保存もされない)という方法もあるようです。(先輩のケースでは、後者の方法で特に問題が無かったので、そちらを採用したそうです。)
対症療法ではなく、本質的な解決策が欲しいところですが… どうやらこの不具合は Visual Studio 2010 の major work として直す予定らしいので、Visual Studio 2008 SP1 では諦めてください、ということらしいのです。
Missing Hotkey for top level buttons in CMFCMenuBar
これはいくらなんでも、ちょっとあんまり過ぎるような気もしますね…
Visual C++ Developer Center > Visual C++ Forums > Visual C++ General > Missing HotKey in using CMFCMenuBar
会社の先輩がハマったという話を聞き、いつか自分も MFC アプリを作る時にハマるかもしれないのでメモしておきます。
上記日本語サイトの、自前で勝手にレジストリに保存されてしまったアクセラレータを消すというハックの他に、そもそも CKeyboardManager を初期化しない(そうすれば当然、勝手に保存もされない)という方法もあるようです。(先輩のケースでは、後者の方法で特に問題が無かったので、そちらを採用したそうです。)
対症療法ではなく、本質的な解決策が欲しいところですが… どうやらこの不具合は Visual Studio 2010 の major work として直す予定らしいので、Visual Studio 2008 SP1 では諦めてください、ということらしいのです。
Missing Hotkey for top level buttons in CMFCMenuBar
This was a major work item in MFC in Visual Studio 2010, addressing a limitation in the library, so there is no simple way to implement this in Visual Studio 2008 SP1. I have no workaround or code suggestions
これはいくらなんでも、ちょっとあんまり過ぎるような気もしますね…