注
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
このデリゲートは、コールバック メソッドをユーザー インターフェイス更新コマンド メッセージに登録します。
CommandUIHandler は CommandHandler に似ていますが、このデリゲートはユーザー インターフェイス オブジェクトの更新コマンドで使用される点が異なります。 ユーザー インターフェイスの更新コマンドは、メッセージ ハンドラー メソッドを使用して 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を呼び出して、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 フォーム コントロールにコマンド ルーティングを追加する
マクロとグローバル