event_receiver
属性
イベント レシーバー (シンク) を作成します。
Note
ネイティブ C++ のイベント属性は、標準 C++ と互換性がありません。 この属性は、/permissive-
準拠モードを指定するとコンパイルされません。
構文
[ event_receiver(type
[, layout_dependent=false]) ]
パラメーター
type
次の値のいずれかの列挙です。
アンマネージ C/C++ コード用の
native
(ネイティブ クラスの既定)。COM コード用の
com
。 この値の場合、ユーザーが次のヘッダー ファイルを含める必要があります。#define _ATL_ATTRIBUTES #include <atlbase.h> #include <atlcom.h>
layout_dependent
type
=com の場合にのみ layout_dependent
を指定します。 layout_dependent
はブール値です。
true
は、イベント レシーバー内のデリゲートのシグネチャが、イベント ソースでフックされているシグネチャと完全に一致する必要があることを意味します。 イベント レシーバー ハンドラー名は、関連するイベント ソース インターフェイスで指定された名前と一致する必要があります。layout_dependent
がtrue
の場合に、coclass
を使用します。true
を指定する方が少し効率的です。false
(既定値) は、呼び出し規約とストレージ クラス (virtual
、static
、他のクラス) がイベント メソッドとハンドラーと一致する必要がないことを意味します。 ハンドラー名も、イベント ソース インターフェイスのメソッド名と一致する必要はありません。
解説
event_receiver
C++ 属性は、Microsoft C++ 統合イベント モデルを使用して、それが適用されるクラスまたは構造体がイベント レシーバーになることを指定します。
event_receiver
は、event_source
属性と __hook
と __unhook
キーワードと一緒に使用されます。 event_source
を使用して、イベント ソースを作成します。 イベント レシーバーのメソッド内で __hook
を使用して、イベント レシーバー メソッドをイベント ソースのイベントに関連付けます ("フック")。 __unhook
を使用して、関連付けを解除します。
layout_dependent
は、COM イベント レシーバー (type
=com
) に対してのみ指定されます。 layout_dependent
の規定値は false
です。
Note
テンプレート クラスまたは構造体に events を含めることはできません。
要件
属性コンテキスト | 値 |
---|---|
適用対象 | class , struct |
反復可能 | いいえ |
必要な属性 | layout_dependent =true の場合は coclass |
無効な属性 | なし |
詳細については、「属性コンテキスト」を参照してください。