次の方法で共有


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

Microsoft Foundation Classes (MFC) ライブラリは引き続きサポートされています。 ただし、機能の追加やドキュメントの更新は行われません。

MFC では、デリゲート マップとインターフェイス マップに対して次のマクロがサポートされています。

Name Description
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

デリゲート マップを開始します。

Syntax

BEGIN_DELEGATE_MAP(  CLASS );

Parameters

CLASS
マネージド コントロールがホストされているクラス。

Remarks

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

Requirements

ヘッダー: msclr\event.h

BEGIN_INTERFACE_MAP

実装ファイルで使用する場合に、インターフェイスマップの定義を開始します。

Syntax

BEGIN_INTERFACE_MAP( theClass, baseClass )

Parameters

theClass
定義するインターフェイス マップが含まれるクラス

baseClass
クラスから派生する クラス。

Remarks

実装されるインターフェイスごとに、1 つ以上のINTERFACE_PARTマクロ呼び出しがあります。 このクラスで使用する集約ごとに 1 つの INTERFACE_AGGREGATE マクロ呼び出しを記述します。

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

Requirements

ヘッダー: afxwin.h

CommandHandler デリゲート

コールバック メソッドをコマンド ソースに登録します。

Syntax

delegate void CommandHandler(  UINT^ cmdID  );

Parameters

cmdID
コマンド ID。

Remarks

このデリゲートは、コールバック メソッドをコマンド ソースに登録します。 コマンド ソース オブジェクトにデリゲートを追加すると、コールバック メソッドは、指定されたソースからのコマンドのハンドラーになります。

詳細については、「方法: Windows フォーム コントロールにコマンド ルーティングを追加するを参照してください。

Windows フォームの使用方法の詳細については、「 MFC での Windows フォーム ユーザー コントロールの使用」を参照してください。

Requirements

Header: afxwinforms.h (アセンブリ atlmfc\lib\mfcmifc80.dll で定義)

CommandUIHandler

コールバック メソッドをユーザー インターフェイス更新コマンド メッセージに登録します。

Syntax

delegate void CommandUIHandler(  unsigned int cmdID, ICommandUI^ cmdUI);

Parameters

cmdID
コマンド ID。

cmdUI
コマンド メッセージ ID。

Remarks

このデリゲートは、コールバック メソッドをユーザー インターフェイス更新コマンド メッセージに登録します。 CommandUIHandlerCommandHandler に似ていますが、このデリゲートはユーザー インターフェイス オブジェクトの更新コマンドで使用される点が異なります。 ユーザー インターフェイスの更新コマンドは、メッセージ ハンドラー メソッドを使用して 1 対 1 でマップする必要があります。

Windows フォームの使用方法の詳細については、「 MFC での Windows フォーム ユーザー コントロールの使用」を参照してください。

Requirements

Header: afxwinforms.h (アセンブリ atlmfc\lib\mfcmifc80.dll で定義)

END_DELEGATE_MAP

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

Syntax

END_DELEGATE_MAP();

Remarks

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

Requirements

ヘッダー: msclr\event.h

END_INTERFACE_MAP

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

Syntax

END_INTERFACE_MAP( )

Remarks

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

Requirements

ヘッダー: afxwin.h

EVENT_DELEGATE_ENTRY

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

Syntax

EVENT_DELEGATE_ENTRY(MEMBER, ARG0, ARG1);

Parameters

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

ARG0
マネージド イベント ハンドラー メソッドの最初の引数 ( Object^など)。

ARG1
マネージド イベント ハンドラー メソッドの 2 番目の引数 ( EventArgs^など)。

Remarks

デリゲート マップ内の各エントリは、 MAKE_DELEGATEによって作成されたマネージド イベント ハンドラー デリゲートに対応します。

Example

次のコード例は、EVENT_DELEGATE_ENTRYを使用して、 OnClick イベント ハンドラーのデリゲート マップにエントリを作成する方法を示しています。また、MAKE_DELEGATEのコード例も参照してください。 詳細については、「方法: ネイティブ C++ クラスからWindows フォームイベントをシンクする」を参照してください。

BEGIN_DELEGATE_MAP(CMyView)
   EVENT_DELEGATE_ENTRY(OnClick, System::Object^, System::EventArgs^)
END_DELEGATE_MAP()

Requirements

ヘッダー: msclr\event.h

INTERFACE_PART

オブジェクトがサポートするインターフェイスごとに、BEGIN_INTERFACE_MAP マクロと END_INTERFACE_MAP マクロの間で使用されます。

Syntax

INTERFACE_PART( theClass, iid, localClass)

Parameters

theClass
インターフェイス マップを持つクラスの名前。

iid
埋め込みクラスにマップされる IID。

localClass
ローカル クラスの名前。

Remarks

この機能により、IIDをtheClassおよびlocalClassによって示されるクラスのメンバーにマップできます。

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

Requirements

ヘッダー: afxwin.h

MAKE_DELEGATE

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

Syntax

MAKE_DELEGATE( DELEGATE,  MEMBER) ;

Parameters

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

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

Remarks

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

Example

次のコード例は、MAKE_DELEGATEを呼び出して、 イベント ハンドラーを MFC コントロール OnClickにアタッチする方法を示しています。 MFC アプリケーションでのこのマクロの動作の詳細については、「方法: ネイティブ C++ クラスからWindows フォームイベントをシンクする方法を参照してください。

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

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

Requirements

ヘッダー: msclr\event.h

こちらも参照ください

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