メニューを表示させなくするには – プログラミング – Home

メニューを表示させなくするには
 
通知
すべてクリア

[解決済] メニューを表示させなくするには


Aquarium
 Aquarium
(@Aquarium)
ゲスト
結合: 22年前
投稿: 29
Topic starter  

お世話になっております。

いま、VC6.0 SP5 の MFC(exe)MDIで
アプリケーションを作成しています。

とある事情からメニューは必要なくなり、
それならばメニューを表示させないように
しよう、ということになりました。

そのために、CMainFrameのOnCreate()の中で

int CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct)
{
if (CMDIFrameWnd::OnCreate(lpCreateStruct) == -1)
return -1;

:
:(省略)
:

//メニューを表示させない
SetMenu(NULL);

return 0;
}

としたところ、起動時には確かにメニューが表示されなくなりました。
ところが、アクティブな子ウィンドウをクリックしたり、
CMainFrameのツールバーのボタンをクリックすると
メニューが表示されてしまいます。

どなたか、上記のような現象を起こさずに
メニューを表示させなくする方法をご存知の方が
いらっしゃいましたらどうぞご教授ください。

よろしくお願いいたします。


引用未解決
トピックタグ
ひろぴー
 ひろぴー
(@ひろぴー)
ゲスト
結合: 22年前
投稿: 182
 

CWinApp::InitInstance()でテンプレートを作成している個所があると思います。
CMultiDocTemplateクラスのコンストラクタの第1引数でメニューやアイコン等を指定出来ま
す。
現在の挙動ですとメニューとアイコンに同じIDがあるものが設定されていると思います。
それをアイコンのみ(メニューにないID)のIDに変更してあげればOKです。

注意点として子ウィンドウが最大化した時の「元のサイズに戻す」や「最小化」などのボタンが
表示されなくなってしまう(普段はメニューの右端に表示される)ので、代替ボタンの実装が必
要だと思います。


返信引用
Aquarium
 Aquarium
(@Aquarium)
ゲスト
結合: 22年前
投稿: 29
Topic starter  

すいません。いくつか補足します。
OSはWinXP Proで、上記MDIは
ドキュメント/ビュー アーキテクチャを
利用しています。

また、上に示したSeEtMenu(NULL);
は、Appクラス内のInitInstance()にある
AddDocTemplate(pDocTemplate);
があると効かないようです。


返信引用
Aquarium
 Aquarium
(@Aquarium)
ゲスト
結合: 22年前
投稿: 29
Topic starter  

ひろぴーさん、ありがとうございます。
教えていただいたとおりにしたところ、
実現することができました。
また、注意点についても現象確認いたしました。

ちなみに今回のアプリケーションでは子ウィンドウの
最大化を含む一切のサイズ変更を禁止している
(というか子ウィンドウはタイトルバー自体がない)
ので特に問題はないかと思います。

本当にありがとうございました。


返信引用

返信する

投稿者名

投稿者メールアドレス

タイトル *

プレビュー 0リビジョン 保存しました
共有:
タイトルとURLをコピーしました