__unhook
Odpojí metodu obslužné rutiny od události.
long __unhook(
&SourceClass::EventMethod,
source,
&ReceiverClass::HandlerMethod
[, receiver = this]
);
long __unhook(
interface,
source
);
long __unhook(
source
);
Parametry
**&**SourceClass :: EventMethod
Ukazatel na metodu události, od které se odpojí metoda obslužné rutiny události:Nativní události jazyka C++: SourceClass je zdrojová třída události a EventMethod je událost.
Události modelu COM: SourceClass je zdrojové rozhraní události a EventMethod je jedním z jeho metod.
Spravované události: SourceClass je zdrojová třída události a EventMethod je událost.
interface
Název rozhraní odpojeného od receiver, pouze u přijímačů událostí modelu COM, ve kterých má parametr layout_dependent atributu event_receiver hodnotu true.zdroj
Ukazatel na instanci zdroje události.V závislosti na kódu může type zadaný v event_receiver, source může nabývat následujících parametrů:Ukazatel objektu zdroje nativní události.
Ukazatel založený na rozhraní IUnknown (prostředek modelu COM).
Ukazatel spravovaného objektu (pro spravované události).
**&**ReceiverClass :: HandlerMethod
Ukazatel na metodu obslužné rutiny události určený pro odpojení od události.Obslužná rutina je zadána jako metoda třídy nebo odkazu na to samé. Není-li zadán název třídy, předpokládá __unhook, že je to třída, ze které je volán.Nativní události jazyka C++: ReceiverClass je přijímač událostí třídy a HandlerMethod je obslužná rutina.
Události modelu COM: ReceiverClass je rozhraní přijímače události a HandlerMethod je jedním z jeho obslužných rutin.
Spravované události: ReceiverClass je přijímač událostí třídy a HandlerMethod je obslužná rutina.
receiver(volitelné)
Ukazatel na instanci třídy příjemce události.Není-li přijímač zadán, je výchozí hodnota třída přijímače nebo struktura, v níž je volána funkce __unhook.
Použití
Je možné jej použít v jakémkoli rozsahu funkce včetně funkce main, mimo třídu příjemce události.
Poznámky
Pro odpojení metody obslužné rutiny od metody události je možné použít vnitřní funkci __unhook.
Existují tři tvary funkce __unhook.Ve většině případů lze použít první tvar (čtyři argumenty).Druhý tvar (dva argumenty) funkce __unhook lze použít pouze pro příjemce události modelu COM, což odpojí celé rozhraní události.Třetí tvar (jeden argument) lze použít k odpojení všech delegátů ze zadaného zdroje.
Nenulová návratová hodnota označuje, že došlo k chybě (spravované události vyvolají výjimku).
Pokud zavoláte funkci __unhook na události a obslužné rutině události, které ještě nejsou připojeny, nebude to mít žádný účinek.
V době kompilace kompilátor ověří, zda událost existuje a provede kontroly typu parametrů se zadanou obslužnou rutinou.
S výjimkou událostí modelu COM lze funkce __hook a __unhook volat mimo příjemce událostí.
Alternativou k používání funkce __unhook je použití operátoru -=.
Informace o spravovaných událostech kódování v nové syntaxi naleznete v tématu event (rozšíření komponent C++).
[!POZNÁMKA]
Třída šablony nebo struktura nemohou obsahovat události.
Příklad
Příklady naleznete v tématech Zpracování událostí v nativním kódu C++ a Zpracování událostí v modelu COM.