スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

CMFCMenuBarではリソース固定のメニューしかうまく操作できないのか?

MFC4.0の頃のアプリで最新のMFCに移行するのに
メニューを書き換えても更新されないし、リストアするとメニューの一部がなくなる現象にはまりました。

MDIのアプリのメニューを、単一のメニューリソースからでなく、複数のリソースをマージして作り、それをDocumentTemplateのm_hMenuSharedにいれるようにしていたのですが、
これをCMFCMenuBarで実装するようにしました。
そうするとフレームワークはレジストリに現在のメニューの状態を保存するのですが、
あるとき、一部のメニューを表示しなくなり、初期状態に戻すを行っても、一向に直りません。
最終的にレジストリから保存データを全部消すとやっともとに戻りました。

MFCのソースを追っていくと、CMFCMenuBarでは、初期状態に戻すというのは、DocumentTemplateのm_hMenuSharedに戻すのではなく、DocumentTemplateのメニューのリソースIDからメニューを組み立てなおすうようになっていました。
これでは、複数のメニューをマージして、DocumentTemplateのm_hMenuSharedを作るというのが、まったく意味を成さなくなっていますね。。。

困り果てたあげく、CMFCMebuBarを継承したクラスを作成し、SaveState()とRestoreOriginalState()の2つのOverride関数をoverrideして、この処理をなにもしない処理にしました。
これによりレジストリに保存することはできなくなりましたが、メニューの一部がなくなるという悲惨な現象はいまのところなくなりました。
なんかいい方法はないものですかね。。
スポンサーサイト

コメントの投稿

非公開コメント

プロフィール

chattera.net

Author:chattera.net
フリーでソフト開発の仕事をしています。
自作したこのチャットシステムは、何か世の中に役に立つこともあるかと思いますので、お呼びがかかるとうれしいですね。

連絡先は chatteranet@gmail.com です。

また、ソフト開発関連のお誘いもうけたまわっております。

最新記事
最新コメント
最新トラックバック
月別アーカイブ
カテゴリ
検索フォーム
RSSリンクの表示
リンク
ブロとも申請フォーム

この人とブロともになる

QRコード
QR
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。