Udostępnij za pośrednictwem


__unhook

Odłącza metodę obsługi od zdarzenia.

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órego zostanie odpięta metoda obsługi zdarzeń:

    • Zdarzenia natywne C++: SourceClass jest klasą źródła zdarzenia, a EventMethod jest zdarzeniem.

    • Zdarzenia modelu COM: SourceClass jest interfejsem źródła zdarzenia, a EventMethod jest jedną z jego metod.

    • Zdarzenia zarządzane: SourceClass jest klasą źródła zdarzenia, a EventMethod jest zdarzeniem.

  • interface
    Nazwa interfejsu zostaje odczepiona od receiver, tylko dla odbiorców zdarzeń COM, w których parametr layout_dependent atrybutu event_receiver ma wartość true.

  • source
    Wskaźnik wystąpienia źródła zdarzenia.Zależnie od kodu type określonego w event_receiver, source może być jednym z następujących:

    • Wskaźnikiem obiektu natywnego źródła zdarzenia.

    • Wskaźnikiem opartym na IUnknown (źródło COM).

    • Wskaźnikiem obiektu zarządzanego (dla zarządzanych zdarzeń).

  • **&**ReceiverClass :: HandlerMethod
    Wskaźnik metody obsługi zdarzenia należy odczepić od zdarzenia.Program obsługi jest określony jako metoda klasy lub odwołanie do niej; jeśli nie zostanie określona nazwa klasy, metoda __unhook zakłada, że klasa jest tą, w której jest wywoływana.

    • Zdarzenia natywne C++: ReceiverClass jest klasą odbiorcy zdarzeń, a HandlerMethod jest programem obsługi.

    • Zdarzenia modelu COM: ReceiverClass jest interfejsem odbiorcy zdarzeń, a HandlerMethod jest jednym z jego programów obsługi.

    • Zdarzenia zarządzane: ReceiverClass jest klasą odbiorcy zdarzeń, a HandlerMethod jest programem obsługi.

  • receiver(opcjonalnie)
    Wskaźnik do wystąpienia klasy odbiornika zdarzeń.Jeśli odbiorca nie jest określony, domyślnie jest to odbiornik klasy lub struktury, w której wywołuje się __unhook.

Użycie

Może być użyty w dowolnym zakresie funkcji, również w głównym, poza klasą odbiornika zdarzeń.

Uwagi

Należy użyć funkcji wewnętrznej __unhook w odbiorniku zdarzeń, aby odłączyć lub "odpiąć" metodę obsługi od metody zdarzenia.

Istnieją trzy rodzaje metody __unhook.W większości przypadków można używać pierwszej formy (cztery argumenty).Drugiej formy (dwa argumenty) metody __unhook można użyć tylko dla odbiornika zdarzeń modelu COM; odpina to cały interfejs zdarzenia.Trzecia forma (jeden argument) służy do odpięcia wszystkich delegatów z określonego źródła.

Zwracana wartość różna od zera wskazuje, że wystąpił błąd (wydarzenia zarządzane spowodują zgłoszenie wyjątku).

Jeśli nastąpi wywołanie __unhook na zdarzeniu i programie obsługi zdarzeń, które nie są jeszcze podłączone, nie przyniesie ono żadnego efektu.

W czasie kompilacji, kompilator sprawdza czy zdarzenie istnieje i czy parametr przechodzi kontrolę typów z określonym programem obsługi.

Z wyjątkiem zdarzeń COM, __hook i __unhook mogą być wywołane poza odbiorcą zdarzeń.

Zamiast używać __unhook można użyć operatora -=.

Aby uzyskać informacje na temat kodowania zarządzanych zdarzeń w nowej składni, zobacz Zdarzenie (Visual C++).

[!UWAGA]

Oparte na szablonach klasy lub struktury nie mogą zawierać zdarzeń.

Przykład

Zobacz Obsługa zdarzeń w natywnym kodzie C++ i Obsługa zdarzeń w modelu COM dla przykładów.

Zobacz też

Informacje

Słowa kluczowe języka C++

event_source

event_receiver

__event

__hook

__raise