次の方法で共有


event_receiver

イベント レシーバー (シンク) を作成します。

[ event_receiver(
   type 
   [, layout_dependent=false] 
) ]

パラメーター

  • type
    次のいずれかの値の列挙型を指定します。

    • アンマネージ C/C++ コードの場合は native。これはネイティブ クラスの既定値です。

    • COM コードの場合は com。 この値には、次のヘッダー ファイルが必要です。

         #define _ATL_ATTRIBUTES
         #include <atlbase.h>
         #include <atlcom.h>
      
  • layout_dependent
    layout_dependent は、type=com の場合だけに指定します layout_dependent はブール値です。値は以下のとおりです。

    • true は、イベント レシーバーのデリゲートのシグネチャがイベント ソースのフック先のデリゲートのシグネチャと正確に一致する必要があることを示します。 イベント レシーバーのハンドラー名は、関連するイベント ソース インターフェイスで指定された名前と一致する必要があります。 layout_dependenttrue の場合は、coclass を使用する必要があります。 true を指定した方が多少効率的です。

    • false (既定値) は、呼び出し規約およびストレージ クラス (仮想、静的など) がイベント メソッドおよびハンドラーと一致する必要がなく、ハンドラー名もイベント ソース インターフェイス メソッド名と一致する必要がないことを示します。

解説

C++ 属性 event_receiver は、この属性が設定されたクラスまたは構造体が Visual C++ の統合イベント モデルを使用したイベント レシーバーになるように指定します。

event_receiver は属性 event_source__hook キーワードおよび __unhook キーワードと組み合わせて使用します。 event_source を使用してイベント ソースを作成します。 イベント レシーバーのメソッド内で __hook を使用して、イベント レシーバーのメソッドをイベント ソースのイベントに関連付け、つまりフックします。 関連付けを解除するには __unhook を使用します。

layout_dependent は、COM イベント レシーバー (type=com) に対してだけ指定します。 layout_dependent の既定値は false です。

注意

テンプレート クラスまたは構造体にイベントを含めることはできません。

必要条件

属性コンテキスト

対象

class、struct

複数回の適用

不要

必要な属性

layout_dependent=true のときは coclass

無効な属性

[なし]

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

参照

参照

event_source

__event

__hook

__unhook

その他の技術情報

コンパイラ属性

クラス属性

ATL サンプル