Partager via


__hook

Associe une méthode de gestionnaire à un événement.

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

Paramètres

  • **&**SourceClass::EventMethod
    Un pointeur vers la méthode d'événement à laquelle vous accrochez la méthode de gestionnaire d'événements :

    • Événements natifs C++ : SourceClass est la classe de l'événement et EventMethod est l'événement.

    • Événements COM : SourceClass est l'interface de source d'événements et EventMethod est l'une de ses méthodes.

    • événements managés : SourceClass est la classe de l'événement et EventMethod est l'événement.

  • interface
    Le nom d'interface en cours de accroché à receiver, uniquement pour les récepteurs d'événements COM dans lesquels le paramètre layout_dependent de l'attribut d' event_receiver est true.

  • source
    Un pointeur vers une instance de la source d'événement.Selon le code type spécifié dans event_receiver, la source peut avoir l'une des opérations suivantes :

    • Un pointeur d'objet natif de l'événement.

    • Un pointeur basé sur d' IUnknownsource (COM).

    • Un pointeur d'objet managé (pour les événements managés).

  • **&**ReceiverClass::HandlerMethod
    Un pointeur vers la méthode de gestionnaire d'événements à connecter à un événement.Le gestionnaire est spécifié comme une méthode de classe ou de référence à les mêmes ; si vous ne spécifiez pas le nom de la classe, __hook suppose que la classe soit celui dans lequel elle est appelée.

    • Événements natifs C++ : ReceiverClass est la classe de récepteur d'événements et HandlerMethod est le gestionnaire.

    • Événements COM : ReceiverClass est l'interface du récepteur d'événements et HandlerMethod est l'un de ses gestionnaires.

    • événements managés : ReceiverClass est la classe de récepteur d'événements et HandlerMethod est le gestionnaire.

  • receiver(facultatif)
    Un pointeur vers une instance de la classe de récepteur d'événements.Si vous ne spécifiez pas un récepteur, la valeur par défaut est la classe ou la structure du récepteur dans lesquelles __hook est appelé.

Utilisation

Peut être l'utilisation dans une portée de fonction, y compris la principale, en dehors de la classe de récepteur d'événements.

Notes

Utilisez la fonction intrinsèque __hook dans un récepteur d'événements pour associer ou raccorder une méthode de gestionnaire avec une méthode d'événement.Le gestionnaire spécifié est ensuite appelé lorsque la source déclenche l'événement spécifié.Vous pouvez connecter plusieurs gestionnaires à un seul événement ou raccorder plusieurs événements à un gestionnaire unique.

Il existe deux formes d' __hook.Vous pouvez utiliser le premier formulaire (de quatre-argument) dans la plupart des cas, spécifiquement, pour les récepteurs d'événements COM dans lesquels le paramètre layout_dependent de l'attribut d' event_receiver est false.

Dans ces cas vous n'avez pas besoin de raccorder toutes les méthodes dans une interface avant de déclencher un événement sur l'une des méthodes ; seule la méthode qui gère l'événement doit être lié.Vous pouvez utiliser le deuxième formulaire (à deux arguments) d' __hook uniquement pour un récepteur d'événements COM dans lequel**=true**layout_dependent.

__hook retourne une longue valeur.une valeur de retour différente de zéro indique qu'une erreur s'est produite (les événements managés lèvent une exception).

Le compilateur vérifie l'existence d'un événement et que la signature d'événement est conforme à la signature du délégué.

À l'exception de les événements COM, __hook et __unhook peuvent être appelés en dehors de le récepteur d'événements.

Une alternative à l'utilisation __hook consiste à utiliser l'opérateur + =.

Pour plus d'informations sur les événements gérés par programmation dans la nouvelle syntaxe, consultez l' événement (Visual C++).

[!REMARQUE]

Une classe ou structure modélisée ne peut pas contenir d'événements.

Exemple

Voir Gestion des événements en C++ natif et l' Gestion des événements dans COM pour obtenir des exemples.

Voir aussi

Référence

Mots clés C++

Gestion des événements

event_source

event_receiver

__unhook

__raise