![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?5a7ff87)
環境はVisual C++ .netでリソースで作ったメニューをCMainFrameクラスで表示しないようにしようとしたのですが、なぜか選択できないグレー表示になってしまいます。気持ち悪いので、どなたかご存知の方教えていただけると嬉しいのですが。
CMainFrame::CMainFrame()
{
CMenu *pMainMenu;
CMenu *pSubMenu;
pMainMenu = GetMenu();
pSubMenu->RemoveMenu(ID_SELECT_DATA_FOLDER, MF_BYCOMMAND);
DrawMenuBar();
}
void CMainFrame::OnUpdateSelectDataFolder(CCmdUI *pCmdUI)
{
// TODO : ここにコマンド更新 UI ハンドラ コードを追加します。
pCmdUI->Enable(false);
}
No.2ベストアンサー
- 回答日時:
ウインドウが作成されてから削除するのではなく、リソースエディタで削除してしまった方が楽だと思います。
pCmdUI->Enable(false);
は削除するコマンドではなく、灰色にするコマンドです。
CMainFrame::OnCreate()
ここでRemoveMenuをすれば該当するメニューが削除されます。削除されるのはメインフレームのメニューです。
MDIなどでは子ウインドウがある場合は子ウインドウ(子フレーム)のメニューが表示されるので削除されていないように見えるのかもしれません。
子ウインドウのメニューをいじるにはいくつか方法があります。簡単な方法としては
CChildFrame::OnUpdateFrameMenu()
でGetParentFrame()->GetMenu()に対してRemoveMenuをかければ削除できます。
No.1
- 回答日時:
>CMenu *pMainMenu;
>CMenu *pSubMenu;
>pMainMenu = GetMenu();
>pSubMenu->RemoveMenu(ID_SELECT_DATA_FOLDER, >MF_BYCOMMAND);
本当にこれで動いてますか?
pSubMenuの値が不定にしか見えないんですけど。
あと、GetMenuをCMainFrameのコンストラクタで呼んでもだめです。ウィンドウが生成された後に呼ばないと意味がありません。なんで、メニュー項目を削除するタイミングはOnCreateがいいんではないでしょうか?
この回答への補足
アドバイスありがとうございます。
失礼しました。メニュー項目の削除はコンストラクタではなく、OnCreate内で定義しておりました。メニューは(選択不可の)グレー表示になっておりますが、実際に動いております。
念のために関連する個所をすべて引用しました。どうぞよろしくお願いします。
[MainFrm.cpp]
int CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct)
{
CMenu *pMainMenu;
CMenu *pSubMenu;
pMainMenu = GetMenu();
pSubMenu = pMainMenu->GetSubMenu(1);
pSubMenu->RemoveMenu(ID_SELECT_DATA_FOLDER, MF_BYCOMMAND);
DrawMenuBar();
}
BEGIN_MESSAGE_MAP(CMainFrame, CFrameWnd)
//{{AFX_MSG_MAP(CMainFrame)
//省略
ON_UPDATE_COMMAND_UI(ID_SELECT_DATA_FOLDER, OnUpdateSelectDataFolder)
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
[MainFrm.h]
protected:
//{{AFX_MSG(CMainFrame)
afx_msg void OnUpdateSelectDataFolder(CCmdUI *pCmdUI);
//}}AFX_MSG
//
DECLARE_MESSAGE_MAP()
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- JavaScript セレクトを全て選択されていないと、文字によるエラーメッセージを表示させるコードを調べています 2 2023/06/22 15:48
- Visual Basic(VBA) Excelのマクロコードについて教えてください。 1 2022/06/19 10:08
- Excel(エクセル) [クイックアクセスツールバー]の設定ファイルの格納場所について、 5 2023/04/21 14:43
- その他(Microsoft Office) ワードのマクロについて教えてください。 1 2023/01/21 16:01
- JavaScript セレクトボックスで配列を呼び出したい。 1 2022/07/08 20:14
- gooブログ ブログの記事を書きだしのみに表示したい 1 2022/06/25 19:11
- Excel(エクセル) 【マクロ】マクロが保存されているエクセルとは、別のエクセルブックの全シートの非表示列を再表示したい 1 2022/12/24 20:48
- JavaScript [Java] Edgeでのアドレスバー非表示について 3 2022/04/20 17:51
- Excel(エクセル) 【マクロ】リボン、行列、数式・ステータスバを非表示に 4 2022/12/12 07:32
- Excel(エクセル) Excelでnullになるような式のセルをマクロで空白行と認識させるにはどうすればいいですか? 3 2023/03/13 13:42
このQ&Aを見た人はこんなQ&Aも見ています
-
「環境が人を育てる」って本当?環境によって人格や生き方は本当に変わるのか
環境が人生に与える影響は実際どれほどのものなのか、専門家の田宮由美さんに伺った。
-
画面を強制的に再描画させる方法
C言語・C++・C#
-
CStringのFindで文字列検索を行いたいのですが
C言語・C++・C#
-
VC++のエディットボックスの非表示
C言語・C++・C#
-
-
4
MFC ポップアップメニューのチェック表示について
C言語・C++・C#
-
5
エディットボックスの入力制限について
C言語・C++・C#
-
6
エディットコントロールでEnter押した時の動作
C言語・C++・C#
-
7
タイトルバーやメニューバーの高さ取得
C言語・C++・C#
-
8
CMainFrameクラスの使い方
C言語・C++・C#
-
9
リソースエディタでスタティックテキストの文字サイズの変更
C言語・C++・C#
-
10
ダイアログ内コントロールの位置取得について
C言語・C++・C#
-
11
ビジュアルC++でボタンの有効/無効
C言語・C++・C#
-
12
適切な変換関数が存在しない???
C言語・C++・C#
-
13
ボタンの表示の色、フォントを変更したい
C言語・C++・C#
-
14
MFCダイアログボックスを最前面に表示
C言語・C++・C#
-
15
エディットボックスのフォントを変えたい
C言語・C++・C#
-
16
DWORDの実際の型は何でしょうか
C言語・C++・C#
-
17
静的でないメンバ関数の呼び出しが正しくありません
C言語・C++・C#
-
18
VC++でマウスホイールイベントを使いたいのですが
C言語・C++・C#
-
19
C++初心者です。 debug assertion errorについて
C言語・C++・C#
-
20
CStringからchar*への型変換について教えてください。
C言語・C++・C#
関連するカテゴリからQ&Aを探す
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
C言語階乗の総和を求める
-
Python、プログラミングについ...
-
c++でテンプレートのコードでわ...
-
gccを行ってもexeファイルが生...
-
c言語
-
プログラム内から、MIDIファイ...
-
win10で、正確な待ち時間の作り方
-
応用情報技術者試験の令和元年...
-
大量のデータを読み込んで表示...
-
右ビットシフト
-
C言語 配列と関数の練習問題
-
gcc13.2のバグ?
-
C言語 入力した値から0までの数...
-
C言語 コマンドプロンプトにつ...
-
プログラミングの課題がわから...
-
なんで
-
バッチファイルで以下のような...
-
インクリメント演算子のみを用...
-
プログラミングについて。 1つ...
-
double型が正常に認識されてい...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
回答の削除が出来ません。どう...
-
ミクル掲示板には知恵袋以上に...
-
VBA実行後、キー入力ができない
-
質問箱で通知たまってるのに、...
-
メニューをグレー表示でなく非...
-
もう一回質問 3DSを売ります。 ...
-
clientmqueueに溜まったキュー...
-
投稿記事を論理削除2
-
テキストファイルの重複行を削...
-
ページ番号を削除できない!
-
Excel vba 重複削除、連番に並...
-
回答が質問者から拒否されたら...
-
教えてgooでは、質問が運営から...
-
Cookieは定期的に削除するべき...
-
hotmail の連絡先を完全に削除...
-
ニンテンドーアカウントを削除...
-
愚痴を削除したのは100歩譲って...
-
削除依頼の通報を何回かしてい...
-
携帯電話のデータは完全に消え...
-
ENOSPCの対処 C言語 linux
おすすめ情報