デリゲートとインターフェイス マップ マクロ

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
ローカル クラスの名前。

解説

このマクロは theClasslocalClass で示されたクラスのメンバーに IID を割り当てます。

インターフェイス マップの詳細については、 テクニカル ノート 38 を参照してください。

要件

ヘッダー: afxwin.h

MAKE_DELEGATE

マネージド コントロールにイベント ハンドラーをアタッチします。

構文

MAKE_DELEGATE( DELEGATE,  MEMBER) ;

パラメーター

代表
マネージド イベント ハンドラー デリゲートの型 ( EventHandler など)。

メンバー
コントロールにアタッチするイベント ハンドラー メソッドの名前。

解説

このマクロは、 DELEGATE および名前 MEMBER のマネージド イベント ハンドラー デリゲートを作成します。 マネージド イベント ハンドラー デリゲートを使用すると、ネイティブ クラスでマネージド イベントを処理できます。

次のコード例は、MAKE_DELEGATEを呼び出して、 イベント ハンドラーを MFC コントロール 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 フォーム コントロールにコマンド ルーティングを追加する
マクロとグローバル