__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ń i EventMethod jest zdarzeniem.

  • Zdarzenia COM: SourceClass to interfejs źródła zdarzeń i EventMethod jest jedną z jego metod.

  • Zdarzenia zarządzane: SourceClass jest klasą źródła zdarzeń i EventMethod 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_receiverpliku źródło może być jednym z następujących typów:

  • Natywny wskaźnik obiektu źródła zdarzeń.

  • Wskaźnik IUnknownoparty 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ń i HandlerMethod jest procedurą obsługi.

  • Zdarzenia COM: ReceiverClass to interfejs odbiorcy zdarzeń i HandlerMethod jest jednym z jego programów obsługi.

  • Zdarzenia zarządzane: ReceiverClass jest klasą odbiorcy zdarzeń i HandlerMethod 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