Partager via


__unhook

dissocie une méthode de gestionnaire d'un événement.

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

Paramètres

  • **&**SourceClass::EventMethod
    Un pointeur vers la méthode d'événement de laquelle vous décrochez 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 décroché d' 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 à décrocher d'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, __unhook 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 __unhook 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 __unhook dans un récepteur d'événements pour dissocier ou « décrochez » une méthode de gestionnaire d'une méthode d'événement.

Il existe trois formes d' __unhook.vous pouvez utiliser le premier formulaire (de quatre-argument) dans la plupart des cas.Vous pouvez utiliser le deuxième formulaire (à deux arguments) d' __unhook uniquement pour un récepteur d'événements COM ; cela déconnecte l'interface d'événement entière.Vous pouvez utiliser le troisième formulaire (d'un) pour décrocher tous les délégués de la source spécifiée.

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

si vous appelez __unhook sur un événement et le gestionnaire d'événements qui ne sont pas déjà accrochés, il n'aura aucun effet.

Au moment de la compilation, le compilateur vérifie que l'événement existe et effectuera la vérification de type de paramètre avec le gestionnaire spécifié.

À 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 __unhook 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++

event_source

event_receiver

__event

__hook

__raise