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