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_dependent が true の場合は、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 |
無効な属性 |
なし |
詳細については、「属性コンテキスト」を参照してください。