「MFCコントロール - メニュー」の版間の差分
ナビゲーションに移動
検索に移動
(ページの作成:「== サンプルコード == <source lang="c++"> // CApp.cpp #include "CApp.h" // CApp_クラス #include "CMainFrame.h" // CMainFrameクラス #include "resource…」) |
|||
64行目: | 64行目: | ||
// メニュー項目Item1のUI更新ハンドラ | // メニュー項目Item1のUI更新ハンドラ | ||
void CMainFrame::OnUpdateItem1(CCmdUI* pCmdUI) | void CMainFrame::OnUpdateItem1(CCmdUI* pCmdUI) | ||
{ | { | ||
// メニュー項目Item1のUI更新 | // メニュー項目Item1のUI更新 | ||
if(pCmdUI) | if(pCmdUI) | ||
{ | { // メニュー項目Item1の有効化 | ||
// | pCmdUI->Enable(TRUE); | ||
pCmdUI->Enable(); | } | ||
else | |||
{ // メニュー項目Item1の無効化 | |||
pCmdUI->Enable(FALSE); | |||
} | } | ||
} | } |
2019年8月18日 (日) 14:25時点における版
サンプルコード
// 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を返す.
}
// CApp.h
#pragma once // VisualC++独自のプリプロセッサで二重インクルード防止
#include "stdafx.h"
class CApp : public CWinApp
{
public:
virtual BOOL InitInstance(); // インスタンスの初期化処理
};
// アプリケーションインスタンスの宣言
CWinApp_ theApp;
// 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);
}
}
// CMainFrame.h
#pragma once // VisualC++独自のプリプロセッサで二重インクルード防止
#include "stdafx.h"
class CMainFrame : public CFrameWnd
{ // フレームウィンドウクラス
public:
CMainFrame(); // デフォルトコンストラクタ
void OnUpdateItem1(CCmdUI* pCmdUI); // メニュー項目Item1_1のUI更新ハンドラ
// メッセージマップ
DECLARE_MESSAGE_MAP() // メッセージマップの利用を宣言
};