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 です。

s7xy0h26.alert_note(ja-jp,VS.90).gifメモ :

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

必要条件

属性コンテキスト

対象

class、struct

複数回の適用

不可

必要な属性

layout_dependent=true のときは coclass

無効な属性

なし

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

参照

概念

コンパイラ属性

event_source

__event

__hook

__unhook

クラス属性

ATL サンプル