Udostępnij za pośrednictwem


__hook

Kojarzy metody obsługi ze zdarzeniem.

long __hook(
   &SourceClass::EventMethod,
   source,
   &ReceiverClass::HandlerMethod
   [, receiver = this]
);
long __hook(
   interface,
   source
);

Parametry

  • **&**SourceClass::EventMethod
    Wskaźnik do metody zdarzeń, do którego są hook metody obsługi zdarzenia:

    • Macierzystym C++ zdarzenia: SourceClass jest klasą źródła zdarzeń i EventMethod jest zdarzeniem.

    • Zdarzeń COM: SourceClass jest interfejs źródłowy zdarzenia i EventMethod jest jednym z jego metody.

    • Zarządzane zdarzenia: SourceClass jest klasą źródła zdarzeń i EventMethod jest zdarzeniem.

  • interface
    Nazwa interfejsu jest przechwycone w taki sposób, aby receiver, tylko dla odbiorników zdarzeń modelu COM, w którym layout_dependent parametr event_receiver atrybut jest true.

  • źródła
    Wskaźnik do instancji źródła zdarzeń.Zależnie od kodu type określonych w event_receiver, źródło może być jedną z następujących czynności:

    • Wskaźnik obiektu źródła zdarzeń macierzystym.

    • IUnknown-oparty wskaźnik (źródło COM).

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

  • **&**ReceiverClass::HandlerMethod
    Wskaźnik do metody obsługi zdarzeń, aby zostać przechwycone w taki sposób, aby zdarzenie.Program obsługi jest określony jako metoda klasy lub odwołanie do samej; Jeśli nie określisz nazwę klasy __hook zakłada klasy się, że w którym jest wywoływana.

    • Macierzystym C++ zdarzenia: ReceiverClass jest klasą zdarzenia odbiornika i HandlerMethod jest program obsługi.

    • Zdarzenia COM: ReceiverClass jest interfejs odbiorca zdarzeń i HandlerMethod jest jednym z jego obsługi.

    • Zarządzane zdarzenia: ReceiverClass jest klasą zdarzenia odbiornika i HandlerMethod jest program obsługi.

  • receiver(opcjonalnie)
    Wskaźnik do instancji klasy event odbiornika.Jeśli odbiorca nie jest określony, domyślnie jest odbiornik klasy lub struktury, w którym __hook jest wywoływana.

Sposób użycia

Może być wykorzystanie w jakikolwiek zakres funkcji, łącznie z głównym poza klasy event odbiornika.

Uwagi

Wewnętrzna funkcja __hook w odbiornika zdarzenia, w celu kojarzenia lub hook metody obsługi zdarzenia metody.Określony program obsługi jest następnie wywoływana podczas źródła podnosi określonego zdarzenia.Można hook kilka programów obsługi do pojedynczego zdarzenia lub hook kilka zdarzeń do jednego programu obsługi.

Istnieją dwie formy __hook.Użyj pierwszego formularza (cztery argument) w większości przypadków, w szczególności dla odbiorcy zdarzeń COM, w którym layout_dependent parametr event_receiver atrybut jest false.

W tych przypadkach nie trzeba hook wszystkie metody w interfejsie przed wyzwalania zdarzenia w jednej z metod; tylko metody obsługi zdarzenia musi być podłączony.Można użyć drugiego formularza (dwóch argument) z __hook tylko dla odbiorcy zdarzeń COM, w którym layout_dependent**= true**.

__hookZwraca wartość long.Niezerowa wartość zwrotu wskazuje, że wystąpił błąd (zdarzenia zarządzanych rzut wyjątek).

Kompilator sprawdza istnienie zdarzenia i że podpisu zdarzenia zgadza się z podpisu delegata.

Z wyjątkiem zdarzeń COM __hook i __unhook może być wywołana poza odbiorcy zdarzeń.

Zamiast używać __hook jest użycie operatora +=.

Aby uzyskać informacje dotyczące kodowania zarządzanych zdarzenia w nowych składni, zobacz Zdarzenie (Visual C++).

[!UWAGA]

Opartą na szablonie klasy lub struktury nie mogą zawierać zdarzenia.

Przykład

Zobacz Obsługa zdarzeń w macierzystym C++ i Obsługa zdarzeń w modelu COM dla próbek.

Zobacz też

Informacje

Słów kluczowych języka C++

Obsługa zdarzeń

źródło_zdarzenia

event_receiver

__unhook

__raise