VisualC++2005、MFC、ダイアログベースで作成しています。
リソースビューからMenuを追加し、メインダイアログに表示させています。
これを一部、非表示にしたいのですが、できますか?
(淡色表示ではなく表示そのものをなくしたい)
デバッグ時には表示しておいて、リリース時には非表示にしたいのです。
初歩的な質問かも知れませんがよろしくお願い致します。
CMenu::LoadMenu()
CWnd::SetMenu()
で動的に設定すれば良いと思うのですが。
つまりリリースのときはやらなければよしと。
おっと、リソースかぁ。
あまり勧めませんが
CWnd::SetMenu( NULL);
かな、できたら
CWnd:GetMenu();
CMenu::DestroyMenu();
しといたほうが丸。たぶん。
> デバッグ時には表示しておいて、リリース時には非表示にしたいのです。
リソースファイルを直接編集するのはどうですか?
IDR_MAINMENU MENU
BEGIN
POPUP "ファイル(&F)"
BEGIN
MENUITEM "項目1", IDM_XXXX
MENUITEM "項目2", IDM_XXXX
MENUITEM "項目3", IDM_XXXX
END
#ifdef _DEBUG
POPUP "デバッグ(&D)"
BEGIN
MENUITEM "項目1", IDM_XXXX
MENUITEM "項目2", IDM_XXXX
END
#endif
POPUP "ヘルプ(&H)"
BEGIN
MENUITEM "項目1", IDM_XXXX
END
END
こするとデバッグ時だけ[デバッグ(D)]というメニュー項目が表示されます。
この方法ならリソースの差し替えだけで簡単にメニューの表示と非表示が出来ます。
動的に非表示するならデバッグ時に表示されるメニューをリソースビューでセット。
初期化ルーチンで非表示にしたい項目を DeleteMenu() 関数で削除します。
#ifdef _DEBUG
::DeleteMenu( hMenu, 1, MF_BYPOSITION );
#endif
どちらでもお好きな方法を。
仲澤@失業者さん、夏みかんさん
ありがとうございます。
夏みかんさんの後者の方法で実行してみたところ、うまくいきました。
リソースファイルをいじるのには抵抗があったので。。。
仲澤@失業者さんからのアドバイス頂いたDestroyMenuも後々試してみたいと思います。
ありがとうございました。
ツイート | ![]() |