デリゲートとインターフェイス マップ マクロ
MFC では、デリゲート マップとインターフェイス マップに対して次のマクロがサポートされています。
名前 | 説明 |
---|---|
BEGIN_DELEGATE_MAP | デリゲート マップを開始します。 |
BEGIN_INTERFACE_MAP | インターフェイスマップの定義を開始します。 |
CommandHandler デリゲート | コールバック メソッドをコマンド ソースに登録します。 |
END_DELEGATE_MAP | デリゲート マップを終了します。 |
END_INTERFACE_MAP | 実装ファイル内のインターフェイス マップを終了します。 |
EVENT_DELEGATE_ENTRY | デリゲート マップにエントリを作成します。 |
INTERFACE_PART | オブジェクトがサポートするインターフェイスごとに、BEGIN_INTERFACE_MAP マクロと END_INTERFACE_MAP マクロの間で使用されます。 |
MAKE_DELEGATE | マネージド コントロールにイベント ハンドラーをアタッチします。 |
BEGIN_DELEGATE_MAP
デリゲート マップを開始します。
構文
BEGIN_DELEGATE_MAP( CLASS );
パラメーター
クラス
マネージド コントロールがホストされているクラス。
解説
このマクロは、デリゲート マップを構成するデリゲート エントリの一覧の先頭をマークします。 このマクロの使用方法の例については、 EVENT_DELEGATE_ENTRYを参照してください。
要件
Header: msclr\event.h
BEGIN_INTERFACE_MAP
実装ファイルで使用する場合に、インターフェイスマップの定義を開始します。
構文
BEGIN_INTERFACE_MAP( theClass, baseClass )
パラメーター
theClass
定義するインターフェイス マップが含まれるクラス
baseClass
theClass の派生元のクラス。
解説
実装されるインターフェイスごとに、1 つ以上のINTERFACE_PARTマクロ呼び出しがあります。 このクラスで使用する集約ごとに 1 つの INTERFACE_AGGREGATE マクロ呼び出しを記述します。
インターフェイス マップの詳細については、 テクニカル ノート 38 を参照してください。
要件
ヘッダー: afxwin.h
CommandHandler デリゲート
コールバック メソッドをコマンド ソースに登録します。
構文
delegate void CommandHandler( UINT^ cmdID );
パラメーター
cmdID
コマンド ID。
解説
このデリゲートは、コールバック メソッドをコマンド ソースに登録します。 コマンド ソース オブジェクトにデリゲートを追加すると、コールバック メソッドは、指定されたソースからのコマンドのハンドラーになります。
詳細については、「方法: Windows フォーム コントロールにコマンド ルーティングを追加するを参照してください。
Windows フォームの使用方法の詳細については、「 MFC での Windows フォーム ユーザー コントロールの使用」を参照してください。
要件
Header: afxwinforms.h (アセンブリ atlmfc\lib\mfcmifc80.dll で定義)
CommandUIHandler
コールバック メソッドをユーザー インターフェイス更新コマンド メッセージに登録します。
構文
delegate void CommandUIHandler( unsigned int cmdID, ICommandUI^ cmdUI);
パラメーター
cmdID
コマンド ID。
cmdUI
コマンド メッセージ ID。
解説
このデリゲートは、コールバック メソッドをユーザー インターフェイス更新コマンド メッセージに登録します。 CommandUIHandler
は、 CommandHandler に似ていますが、このデリゲートはユーザー インターフェイス オブジェクトの更新コマンドで使用されます。 ユーザー インターフェイスの更新コマンドは、メッセージ ハンドラー メソッドを使用して 1 対 1 でマップする必要があります。
Windows フォームの使用方法の詳細については、「 MFC での Windows フォーム ユーザー コントロールの使用」を参照してください。
要件
Header: afxwinforms.h (アセンブリ atlmfc\lib\mfcmifc80.dll で定義)
END_DELEGATE_MAP
デリゲート マップを終了します。
構文
END_DELEGATE_MAP();
解説
このマクロは、デリゲート マップを構成するデリゲート エントリの一覧の末尾をマークします。 このマクロの使用方法の例については、 EVENT_DELEGATE_ENTRYを参照してください。
要件
Header: msclr\event.h
END_INTERFACE_MAP
実装ファイル内のインターフェイス マップを終了します。
構文
END_INTERFACE_MAP( )
解説
インターフェイス マップの詳細については、「 テクニカル ノート 38を参照してください。
要件
ヘッダー: afxwin.h
EVENT_DELEGATE_ENTRY
デリゲート マップにエントリを作成します。
構文
EVENT_DELEGATE_ENTRY(MEMBER, ARG0, ARG1);
パラメーター
メンバー
コントロールにアタッチするイベント ハンドラー メソッド。
ARG0
マネージド イベント ハンドラー メソッドの最初の引数 ( Object^
など)。
ARG1
マネージド イベント ハンドラー メソッドの 2 番目の引数 ( EventArgs^
など)。
解説
デリゲート マップ内の各エントリは、 MAKE_DELEGATEによって作成されたマネージド イベント ハンドラー デリゲートに対応します。
例
次のコード例は、EVENT_DELEGATE_ENTRYを使用して、 OnClick
イベント ハンドラーのデリゲート マップにエントリを作成する方法を示しています。また、MAKE_DELEGATEのコード例も参照してください。 詳細については、「方法: ネイティブ C++ クラスからWindows フォームイベントをシンクする」を参照してください。
BEGIN_DELEGATE_MAP(CMyView)
EVENT_DELEGATE_ENTRY(OnClick, System::Object^, System::EventArgs^)
END_DELEGATE_MAP()
要件
Header: msclr\event.h
INTERFACE_PART
オブジェクトがサポートするインターフェイスごとに、BEGIN_INTERFACE_MAP マクロと END_INTERFACE_MAP マクロの間で使用されます。
構文
INTERFACE_PART( theClass, iid, localClass)
パラメーター
theClass
インターフェイス マップを持つクラスの名前。
iid
埋め込みクラスにマップされる IID。
localClass
ローカル クラスの名前。
解説
このマクロは theClass と localClass で示されたクラスのメンバーに IID を割り当てます。
インターフェイス マップの詳細については、 テクニカル ノート 38 を参照してください。
要件
ヘッダー: afxwin.h
MAKE_DELEGATE
マネージド コントロールにイベント ハンドラーをアタッチします。
構文
MAKE_DELEGATE( DELEGATE, MEMBER) ;
パラメーター
代表
マネージド イベント ハンドラー デリゲートの型 ( EventHandler など)。
メンバー
コントロールにアタッチするイベント ハンドラー メソッドの名前。
解説
このマクロは、 DELEGATE および名前 MEMBER のマネージド イベント ハンドラー デリゲートを作成します。 マネージド イベント ハンドラー デリゲートを使用すると、ネイティブ クラスでマネージド イベントを処理できます。
例
次のコード例は、MAKE_DELEGATE
を呼び出して、MyControl
にアタッチする方法を示しています。 MFC アプリケーションでのこのマクロの動作の詳細については、「方法: ネイティブ C++ クラスからWindows フォームイベントをシンクする方法を参照してください。
// CMyView derives from CWinFormsView.
void CMyView::OnInitialUpdate()
{
CWinFormsView::OnInitialUpdate();
GetControl()->Click += MAKE_DELEGATE(System::EventHandler, OnClick);
}
要件
Header: msclr\event.h
関連項目
方法: ネイティブ C++ クラスから Windows フォーム イベントをシンクする
方法: Windows フォーム コントロールにコマンド ルーティングを追加する
マクロとグローバル