__unhook
Słowa kluczowego
Usuwa skojarzenie metody obsługi ze zdarzenia.
Uwaga
Atrybuty zdarzeń w natywnym języku C++ są niezgodne z językiem Standard C++. Nie są one kompilowane podczas określania /permissive-
trybu zgodności.
Składnia
long __unhook(
&SourceClass::EventMethod,
source,
&ReceiverClass::HandlerMethod
[, receiver = this]
);
long __unhook(
interface,
source
);
long __unhook(
source
);
Parametry
&SourceClass::EventMethod
Wskaźnik do metody zdarzenia, z której odłączysz metodę obsługi zdarzeń:
Natywne zdarzenia języka C++:
SourceClass
jest klasą źródła zdarzeń iEventMethod
jest zdarzeniem.Zdarzenia COM:
SourceClass
to interfejs źródła zdarzeń iEventMethod
jest jedną z jego metod.Zdarzenia zarządzane:
SourceClass
jest klasą źródła zdarzeń iEventMethod
jest zdarzeniem.
interface
Nazwa interfejsu jest odłączona od odbiornika, tylko dla odbiorników zdarzeń COM, w których parametr event_receiver
layout_dependent atrybutu to true
.
source
Wskaźnik do wystąpienia źródła zdarzeń. W zależności od kodu type
określonego w event_receiver
pliku źródło może być jednym z następujących typów:
Natywny wskaźnik obiektu źródła zdarzeń.
Wskaźnik
IUnknown
oparty na modelu (źródło COM).Wskaźnik obiektu zarządzanego (dla zdarzeń zarządzanych).
&ReceiverClass::HandlerMethod
Wskaźnik do metody obsługi zdarzeń, który ma zostać odłączony od zdarzenia. Procedura obsługi jest określana jako metoda klasy lub odwołanie do tej samej; Jeśli nie określisz nazwy klasy, przyjmuje się, że klasa będzie klasą, __unhook
w której jest wywoływana.
Natywne zdarzenia języka C++:
ReceiverClass
jest klasą odbiornika zdarzeń iHandlerMethod
jest procedurą obsługi.Zdarzenia COM:
ReceiverClass
to interfejs odbiorcy zdarzeń iHandlerMethod
jest jednym z jego programów obsługi.Zdarzenia zarządzane:
ReceiverClass
jest klasą odbiorcy zdarzeń iHandlerMethod
jest procedurą obsługi.
receiver
(opcjonalnie) Wskaźnik do wystąpienia klasy odbiorcy zdarzeń. Jeśli nie określisz odbiornika, wartością domyślną jest klasa odbiorcy lub struktura, w której __unhook
jest wywoływana.
Użycie
Może być używany w dowolnym zakresie funkcji, w tym main
, poza klasą odbiorcy zdarzeń.
Uwagi
Użyj funkcji __unhook
wewnętrznej w odbiorniku zdarzeń, aby usunąć skojarzenie lub "unhook" metody obsługi z metody zdarzenia.
Istnieją trzy formy .__unhook
W większości przypadków można użyć pierwszego (czterech argumentów) formularza. Można użyć drugiej (dwóch argumentów __unhook
) formy tylko dla odbiornika zdarzeń COM; odłącza cały interfejs zdarzenia. Możesz użyć trzeciego formularza (jeden argument), aby odeprzeć wszystkich delegatów z określonego źródła.
Wartość niezerowa wskazuje, że wystąpił błąd (zdarzenia zarządzane zgłosi wyjątek).
Jeśli wywołasz __unhook
program obsługi zdarzeń i zdarzeń, które nie są jeszcze podłączone, nie będzie to miało żadnego wpływu.
W czasie kompilacji kompilator sprawdza, czy zdarzenie istnieje i czy sprawdza typ parametru w określonej procedurze obsługi.
Można wywoływać __hook
i __unhook
spoza odbiornika zdarzeń, z wyjątkiem zdarzeń COM.
Alternatywą do użycia __unhook
jest użycie operatora -=.
Aby uzyskać informacje na temat kodowania zdarzeń zarządzanych w nowej składni, zobacz zdarzenie.
Uwaga
Klasa lub struktura szablonu nie może zawierać zdarzeń.
Przykład
Zobacz Obsługa zdarzeń w natywnym języku C++ i obsługa zdarzeń w modelu COM , aby uzyskać przykłady.
Zobacz też
Słowa kluczowe
event_source
event_receiver
__event
__hook
__raise
Opinia
https://aka.ms/ContentUserFeedback.
Dostępne już wkrótce: W 2024 r. będziemy stopniowo wycofywać zgłoszenia z serwisu GitHub jako mechanizm przesyłania opinii na temat zawartości i zastępować go nowym systemem opinii. Aby uzyskać więcej informacji, sprawdź:Prześlij i wyświetl opinię dla