__hook
Přidruží metoda obslužnou rutinu události.
long __hook(
&SourceClass::EventMethod,
source,
&ReceiverClass::HandlerMethod
[, receiver = this]
);
long __hook(
interface,
source
);
Parametry
**&**SourceClass::EventMethod
Ukazatel na událost metody, které zavěšení metoda obslužné rutiny události:Nativní události C++: SourceClass je třída zdroje událostí a EventMethod je událost.
Události COM: SourceClass zdrojové rozhraní událostí a EventMethod je jedním z jeho metody.
Spravované události: SourceClass je třída zdroje událostí a EventMethod je událost.
interface
Název rozhraní, který je připojený k receiver, pouze pro přijímačů událostí COM, ve kterém layout_dependent parametr event_receiver je atribut true.zdroj
Ukazatel na instanci zdroj události.V závislosti na kódu type v event_receiver, zdroje může být jeden z následujících:Nativní události objektu ukazatelem zdroje.
IUnknown-založen ukazatel (zdroj COM).
Ukazatel spravovaného objektu (pro spravované události).
**&**ReceiverClass::HandlerMethod
Ukazatel na metodu obslužnou rutinu události pro své použití události.Obslužná rutina je určen jako metoda třídy nebo odkaz na stejné. Pokud nezadáte název třídy __hook třídy za, ve kterém nazývá předpokládá.Nativní události C++: ReceiverClass je třída události přijímač a HandlerMethod je popisovač.
Události COM: ReceiverClass je přijímač rozhraní události a HandlerMethod je jedním z jeho obslužné rutiny.
Spravované události: ReceiverClass je třída události přijímač a HandlerMethod je popisovač.
receiver(volitelné)
Ukazatel na instanci třídy událostí přijímač.Pokud nezadáte přijímač, výchozí hodnota je přijímač třídy nebo struktury, v níž __hook se nazývá.
Použití
Je možné použít v oboru funkce, včetně hlavní mimo přijímač třídy event.
Poznámky
Vnitřní funkci __hook v události přijímače, který chcete spojit nebo metodu zpracování s metodu události zavěšení.Zadaný popisovač je poté volána vyvolává zdroje zadané události.Můžete několika obsluhy k jedné události zavěšení nebo zavěšení několik jedinou obslužnou rutinu události.
Existují dvě formy __hook.První formulář (čtyři argument) ve většině případů můžete použít konkrétně pro přijímačů událostí COM, ve kterém layout_dependent parametr event_receiver je atribut false.
V těchto případech není nutné k zapojení všech metod v rozhraní před spalujících událost na jednu z metod; pouze metody zpracování události, potřebuje pro své použití.Můžete použít druhý formulář (dvě argument) z __hook pouze pro příjemce událostí modelu COM ve kterém layout_dependent**= true**.
__hookVrátí hodnotu long.Vrácená nenulová hodnota znamená, že (spravované události throw výjimku) došlo k chybě.
Kompilátor zkontroluje existenci události a události podpis souhlasí s podpisem delegáta.
S výjimkou z události COM __hook a __unhook lze volat mimo příjemce událostí.
Alternativu k použití __hook je použít operátor +=.
Informace o kódování spravované události do nové syntaxe, viz události (Visual C++).
[!POZNÁMKA]
Události nemohou obsahovat podle šablony třídy nebo struct.
Příklad
Viz Zpracování událostí v nativním jazyce C++ a Zpracování událostí v modelu COM pro vzorky.