MochiuWiki : SUSE, EC, PCB
案内
メインページ
最近の更新
おまかせ表示
MediaWiki についてのヘルプ
ツール
リンク元
関連ページの更新状況
特別ページ
ページ情報
We ask for
Donations
検索
個人用ツール
ログイン
Toggle dark mode
名前空間
ページ
議論
表示
閲覧
ソースを閲覧
履歴を表示
MFCコントロール - メニューのソースを表示
提供: MochiuWiki : SUSE, EC, PCB
←
MFCコントロール - メニュー
あなたには「このページの編集」を行う権限がありません。理由は以下の通りです:
この操作は、次のグループのいずれかに属する利用者のみが実行できます:
管理者
、new-group。
このページのソースの閲覧やコピーができます。
== 概要 == <br><br> == メインメニュー項目の無効化 == <syntaxhighlight 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を返す. } </syntaxhighlight> <br> <syntaxhighlight lang="c++"> // CApp.h #pragma once // VisualC++独自のプリプロセッサで二重インクルード防止 #include "stdafx.h" class CApp : public CWinApp { public: virtual BOOL InitInstance(); // インスタンスの初期化処理 }; // アプリケーションインスタンスの宣言 CWinApp_ theApp; </syntaxhighlight> <br> <syntaxhighlight 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); } } </syntaxhighlight> <br> <syntaxhighlight lang="c++"> // CMainFrame.h #pragma once // VisualC++独自のプリプロセッサで二重インクルード防止 #include "stdafx.h" class CMainFrame : public CFrameWnd { // フレームウィンドウクラス public: CMainFrame(); // デフォルトコンストラクタ // メッセージマップ DECLARE_MESSAGE_MAP() // メッセージマップの利用を宣言 void OnUpdateItem1(CCmdUI* pCmdUI); // メニュー項目Item1_1のUI更新ハンドラ }; </syntaxhighlight> <br><br> == サブメニュー項目の無効化 == 以下の例では、TESTという名前のサブメニュー項目を検索して無効化している。<br> <br> サブメニュー項目はリソースIDを持っていないため、直接、無効化することができない。<br> そのため、上位の<code>CMenu</code>クラスから位置を指定して無効化する。<br> <br> また、さらに下位の階層の項目を無効化する場合は、<code>pMenu->GetSubMenu()</code>メソッドで取得して検索する。<br> <syntaxhighlight lang="c++"> CWnd* pWnd = ::AfxGetMainWnd(); CMenu* pMainMenu = pWnd->GetMenu(); int SubMenuCount = 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(); } } </syntaxhighlight> <br><br> __FORCETOC__ [[カテゴリ:MFC]]
MFCコントロール - メニュー
に戻る。
案内
メインページ
最近の更新
おまかせ表示
MediaWiki についてのヘルプ
ツール
リンク元
関連ページの更新状況
特別ページ
ページ情報
We ask for
Donations
Collapse