__hook
słowo kluczowe
Kojarzy metodę obsługi ze zdarzeniem.
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 __hook(
&SourceClass::EventMethod,
source,
&ReceiverClass::HandlerMethod
[, receiver = this]
);
long __hook(
interface,
source
);
Parametry
&SourceClass::EventMethod
Wskaźnik do metody zdarzenia, do której jest podłączana metoda 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 podłączona do receiver
metody , tylko dla odbiorników zdarzeń COM, w których layout_dependent
parametr atrybutu event_receiver
to true
.
source
Wskaźnik do wystąpienia źródła zdarzeń. W zależności od kodu type
określonego w source
event_receiver
pliku 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óra ma zostać podłączona do zdarzenia. Procedura obsługi jest określana jako metoda klasy lub odwołanie do tej samej klasy. Jeśli nie określisz nazwy klasy, przyjmij, __hook
że klasa jest wywoływana z.
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 __hook
jest wywoływana.
Użycie
Może być używany w dowolnym zakresie funkcji, w tym głównym, poza klasą odbiorcy zdarzeń.
Uwagi
Użyj funkcji __hook
wewnętrznej w odbiorniku zdarzeń, aby skojarzyć lub podłączyć metodę obsługi z metodą zdarzenia. Określona procedura obsługi jest następnie wywoływana, gdy źródło zgłasza określone zdarzenie. Możesz podłączyć kilka programów obsługi do pojedynczego zdarzenia lub podłączyć kilka zdarzeń do pojedynczej procedury obsługi.
Istnieją dwie formy .__hook
W większości przypadków można użyć pierwszego (czterech argumentów) formularza, w szczególności dla odbiorników zdarzeń COM, w których parametr event_receiver
layout_dependent atrybutu to false
.
W takich przypadkach nie trzeba podłączać wszystkich metod w interfejsie przed uruchomieniem zdarzenia na jednej z metod. Wystarczy podłączyć metodę obsługi zdarzenia. Można użyć drugiej (dwóch argumentów __hook
) formy tylko dla odbiornika zdarzeń COM, w którym layout_dependent
= true
.
__hook
zwraca wartość długą. Wartość niezerowa wskazuje, że wystąpił błąd (zdarzenia zarządzane zgłaszają wyjątek).
Kompilator sprawdza istnienie zdarzenia i że podpis zdarzenia zgadza się z podpisem delegowanym.
Można wywoływać __hook
i __unhook
spoza odbiornika zdarzeń, z wyjątkiem zdarzeń COM.
Alternatywą do użycia __hook
jest użycie operatora +=.
Aby uzyskać informacje na temat kodowania zdarzeń zarządzanych w nowej składni, zobacz event
.
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
Obsługa zdarzeń
event_source
event_receiver
__event
__unhook
__raise