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_dependenttrue の場合に、coclass を使用します。 true を指定する方が少し効率的です。

  • false (既定値) は、呼び出し規約とストレージ クラス (virtualstatic、他のクラス) がイベント メソッドとハンドラーと一致する必要がないことを意味します。 ハンドラー名も、イベント ソース インターフェイスのメソッド名と一致する必要はありません。

解説

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 を含めることはできません。

必要条件

属性コンテキスト Value
適用対象 class, struct
反復可能 いいえ
必要な属性 layout_dependent=true の場合は coclass
無効な属性 なし

詳細については、「属性コンテキスト」を参照してください。

関連項目

コンパイラ属性
event_source
__event
__hook
__unhook
クラス属性