Freigeben über


__hook

Ordnet eine Handlermethode mit einem Ereignis.

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

Parameter

  • **&**SourceClass::EventMethod
    Ein Zeiger auf den für die Ereignismethode verknüpfen Sie die Ereignishandlermethode:

    • Eingeboren-C++-Ereignisse: SourceClass ist die Ereignisquellen und - Klasse EventMethod ist das Ereignis.

    • COM-Ereignisse: SourceClass ist die Quellschnittstelle des Ereignisses und EventMethod ist eine seiner Methoden.

    • Verwaltete Ereignisse: SourceClass ist die Ereignisquellen und - Klasse EventMethod ist das Ereignis.

  • interface
    Der Name, der receiverempfänger gehakt nur für COM-Ereignis wurde, in denen der layout_dependent-Parameter des Attributs event_receivertrueist.

  • source
    Ein Zeiger auf eine Instanz der Ereignisquelle.Abhängig vom Code type , das in event_receivereine Quelle angegeben ist, kann der folgenden Werte sein:

    • Ein systemeigener Ereignisquellenobjektzeiger.

    • Ein Zeiger er-basiert IUnknown(COM-Quelle).

    • Ein Zeiger des verwalteten Objekts (für verwaltete Ereignisse).

  • **&**ReceiverClass::HandlerMethod
    Ein Zeiger auf die ein Ereignis gehakt Ereignishandlermethode werden soll.Der Handler wird z. B. eine Methode einer Klasse oder eines Verweises auf den gleichen angegeben. Wenn Sie nicht den Klassennamen angeben, geht __hook die Klasse an, die die zu sein, in dem sie aufgerufen wird.

    • Eingeboren-C++-Ereignisse: ReceiverClass ist die Ereignisempfänger Klasse und HandlerMethod ist der Handler.

    • COM-Ereignisse: ReceiverClass ist die Ereignisempfänger Oberfläche und HandlerMethod ist einer der Handler.

    • Verwaltete Ereignisse: ReceiverClass ist die Ereignisempfänger Klasse und HandlerMethod ist der Handler.

  • receiver(optional)
    Ein Zeiger auf eine Instanz der Ereignisempfänger Klasse.Wenn Sie keinen Empfänger angeben, wird standardmäßig die Empfänger - Klasse oder Struktur, in der __hook aufgerufen wird.

Verwendung

Kann die Verwendung in jedem Gültigkeitsbereich der Funktion, einschließlich main, außerhalb der Ereignisempfänger Klasse.

Hinweise

Verwenden Sie die systeminterne Funktion __hook in einem Ereignisempfänger oder im Hook, um eine Handlermethode mit einer Ereignismethode zuzuordnen.Der angegebene Handler wird aufgerufen, wenn die Quelle das angegebene Ereignis auslöst.Sie können mehrere Handler mit einem einzelnen Ereignis zu verknüpfen oder mehrere Ereignisse mit einem einzigen Ereignishandler.

Es gibt zwei Formen von __hook.Sie können das erste Argument Vier () - Formular in den meisten Fällen speziell für COM-Ereignis empfänger verwenden, in denen der layout_dependent-Parameter des Attributs event_receiverfalseist.

In diesen Fällen benötigen Sie Hook alle Methoden in einer Schnittstelle nicht, bevor Sie eine der Methoden auf ein Ereignis ausgelöst werden. Nur die Methode für die Ereignisbehandlung, muss gehakt werden.Sie können das zweite Argument Zwei () - Formular von __hook nur für ein COM-Ereignis empfänger verwenden, wobei layout_dependent**=true**.

__hook gibt einen Long-Wert zurück.Ein Wert ungleich 0 (null) gibt an, dass ein Fehler aufgetreten ist (verwaltete Ereignisse lösen eine Ausnahme aus.)

Der Compiler überprüft, ob das Vorhandensein eines Ereignisses und dass die Ereignissignatur mit der Delegatsignatur entspricht.

Mit Ausnahme von COM-Ereignissen können __hook und __unhook außerhalb des Ereignisempfängers aufgerufen werden.

Eine Alternative zur Verwendung von __hook des Operators ist.

Weitere Informationen über Codierung verwaltete Ereignisse in der neuen Syntax finden Sie unter Ereignis (Visual C++).

HinweisHinweis

Eine von einer Vorlage gebildete Klasse oder Struktur kann keine Ereignisse enthalten.

Beispiel

Weitere Informationen finden Sie unter Ereignisbehandlung in systemeigenem C++ und Beispiele für Ereignisbehandlung in COM .

Siehe auch

Referenz

C++-Schlüsselwörter

Ereignisbehandlung

event_source

event_receiver

__unhook

__raise