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

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を参照してください

必要条件

ヘッダー: 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 フォーム ユーザー コントロールの使用」を参照してください

必要条件

ヘッダー: 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 フォーム ユーザー コントロールの使用」を参照してください

必要条件

ヘッダー: afxwinforms.h (アセンブリ atlmfc\lib\mfcmifc80.dll で定義)

END_DELEGATE_MAP

デリゲート マップを終了します。

構文

END_DELEGATE_MAP();

解説

このマクロは、デリゲート マップを構成するデリゲート エントリの一覧の末尾をマークします。 このマクロの使用方法の例については、EVENT_DELEGATE_ENTRYを参照してください

必要条件

ヘッダー: msclr\event.h

END_INTERFACE_MAP

実装ファイル内のインターフェイス マップを終了します。

構文

END_INTERFACE_MAP( )

解説

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

必要条件

ヘッダー: afxwin.h

EVENT_DELEGATE_ENTRY

デリゲート マップにエントリを作成します。

構文

EVENT_DELEGATE_ENTRY(MEMBER, ARG0, ARG1);

パラメーター

ME MB (メガバイト)ER
コントロールにアタッチするイベント ハンドラー メソッド。

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()

必要条件

ヘッダー: 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 などのマネージド イベント ハンドラー デリゲートの型。

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

解説

このマクロは、DELEGATE 型と ME MB (メガバイト)ER という名前のマネージド イベント ハンドラー デリゲートを作成します マネージド イベント ハンドラー デリゲートを使用すると、ネイティブ クラスでマネージド イベントを処理できます。

次のコード例は、MFC コントロールMyControlにイベント ハンドラーをOnClickアタッチするために呼び出MAKE_DELEGATEす方法を示しています。 MFC アプリケーションでこのマクロがどのように機能するかについて詳しくは、「方法: ネイティブ C++ クラスからWindows フォームイベントをシンクする」をご覧ください

// CMyView derives from CWinFormsView.
void CMyView::OnInitialUpdate()
{
   CWinFormsView::OnInitialUpdate();

   GetControl()->Click += MAKE_DELEGATE(System::EventHandler, OnClick);
}

必要条件

ヘッダー: msclr\event.h

関連項目

方法: ネイティブ C++ クラスから Windows フォーム イベントをシンクする
方法: Windows フォーム コントロールにコマンド ルーティングを追加する
マクロとグローバル