MochiuWiki : SUSE, EC, PCB
案内
メインページ
最近の更新
おまかせ表示
MediaWiki についてのヘルプ
ツール
リンク元
関連ページの更新状況
特別ページ
ページ情報
We ask for
Donations
検索
個人用ツール
ログイン
Toggle dark mode
名前空間
ページ
議論
表示
閲覧
ソースを閲覧
履歴を表示
MFCコントロール - メニューのソースを表示
提供: MochiuWiki : SUSE, EC, PCB
←
MFCコントロール - メニュー
あなたには「このページの編集」を行う権限がありません。理由は以下の通りです:
この操作は、次のグループのいずれかに属する利用者のみが実行できます:
管理者
、new-group。
このページのソースの閲覧やコピーができます。
== サンプルコード(メインメニュー項目の無効化) == <source lang="c++"> // CApp.cpp #include "CApp.h" // CApp_クラス #include "CMainFrame.h" // CMainFrameクラス #include "resource.h" // リソースID // CAppのメンバの定義 // メンバ関数InitInstance() BOOL CWinApp_::InitInstance() { // インスタンスの初期化処理 // 構造体の宣言 CFrameWnd_ *pFrameWnd; // CFrameWnd_のオブジェクトポインタ // CFrameWnd_のインスタンス作成 pFrameWnd = new CFrameWnd(); // CFrameWndのインスタンスを作成し, pFrameWndに格納 m_pMainWnd = pFrameWnd; // m_pMainWndにpFrameWndをセット // フレームをリソースからロードしてウィンドウを作成 pFrameWnd->LoadFrame(IDR_MAINFRAME); // LoadFrameで共有リソースIDがIDR_MAINFRAMEとなるフレームをロード // CFrameWndの表示 pFrameWnd->ShowWindow(m_nCmdShow); // ShowWindowでウィンドウを表示 // CFrameWnd_の更新 pFrameWnd->UpdateWindow(); // UpdateWindowでウィンドウを更新 // 初期化成功 return TRUE; // 初期化成功ならTRUEを返す. } </source> <br> <source lang="c++"> // CApp.h #pragma once // VisualC++独自のプリプロセッサで二重インクルード防止 #include "stdafx.h" class CApp : public CWinApp { public: virtual BOOL InitInstance(); // インスタンスの初期化処理 }; // アプリケーションインスタンスの宣言 CWinApp_ theApp; </source> <br> <source lang="c++"> // CMainFrame.cpp #include "stdafx.h" #include "CMainFrame.h" // CMainFrameのメッセージマップ BEGIN_MESSAGE_MAP(CMainFrame, CFrameWnd) ON_UPDATE_COMMAND_UI(ID_ITEM_1, OnUpdateItem1) // メニュー項目のUI更新マクロ END_MESSAGE_MAP() // CMainFrameのメンバの定義 CMainFrame::CMainFrame() { } // メニュー項目Item1のUI更新ハンドラ void CMainFrame::OnUpdateItem1(CCmdUI* pCmdUI) { // メニュー項目Item1のUI更新 if(pCmdUI) { // メニュー項目Item1の有効化 pCmdUI->Enable(TRUE); } else { // メニュー項目Item1の無効化 pCmdUI->Enable(FALSE); } } </source> <br> <source lang="c++"> // CMainFrame.h #pragma once // VisualC++独自のプリプロセッサで二重インクルード防止 #include "stdafx.h" class CMainFrame : public CFrameWnd { // フレームウィンドウクラス public: CMainFrame(); // デフォルトコンストラクタ void OnUpdateItem1(CCmdUI* pCmdUI); // メニュー項目Item1_1のUI更新ハンドラ // メッセージマップ DECLARE_MESSAGE_MAP() // メッセージマップの利用を宣言 }; </source> <br><br> == サンプルコード(サブメニュー項目の無効化) == 下記のサンプルコードでは、TESTという名前の項目を検索して無効化している。<br> <source lang="c++"> CWnd* pWnd = AfxGetMainWnd(); CMenu* pMenu = pWnd->GetMenu(); int MenuCount = pMenu->GetMenuItemCount(); for(int i = 0; i < MenuCount; i++) { CString strSubMenu; pMenu->GetMenuString(i, strSubMenu, MF_BYPOSITION); if(0 == strSubMenu.Compare(_T("TEST"))) { pMenu->EnableMenuItem(i, MF_BYPOSITION | MF_DISABLED | MF_GRAYED); // 状態を設定する pWnd->DrawMenuBar(); } } </source> <br> サブメニュー項目はリソースIDを持っていないので、直接無効化することができない。<br> 上位のCMenuコントロールを用いて位置を指定して無効化する。<br> また、下位の階層の項目を変更したい場合はpMenu->GetSubMenuで取得して、更に検索する。<br> <br><br> __FORCETOC__ [[カテゴリ:MFC]]
MFCコントロール - メニュー
に戻る。
案内
メインページ
最近の更新
おまかせ表示
MediaWiki についてのヘルプ
ツール
リンク元
関連ページの更新状況
特別ページ
ページ情報
We ask for
Donations
Collapse