デリゲートとインターフェイス マップ マクロ
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
ローカル クラスの名前。
解説
このマクロは theClass と localClass で示されたクラスのメンバーに 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 フォーム コントロールにコマンド ルーティングを追加する
マクロとグローバル
フィードバック
https://aka.ms/ContentUserFeedback」を参照してください。
以下は間もなく提供いたします。2024 年を通じて、コンテンツのフィードバック メカニズムとして GitHub の issue を段階的に廃止し、新しいフィードバック システムに置き換えます。 詳細については、「フィードバックの送信と表示