ATL, résumé de la gestion des événements

En général, la gestion des événements COM est un processus relativement simple. Il existe trois étapes principales :

  • Implémentez l’interface d’événement sur votre objet.

  • Indiquez à la source d’événement que votre objet souhaite recevoir des événements.

  • Annulez la notification de la source d’événement lorsque votre objet n’a plus besoin de recevoir des événements.

Implémentation de l'interface

Il existe quatre méthodes principales d’implémentation d’une interface à l’aide d’ATL.

Dériver de Adapté au type d’interface Exige que vous implémentez toutes les méthodes* Nécessite une bibliothèque de types au moment de l’exécution
Interface Table virtuelle Oui No
IDispatchImpl Double Oui Oui
IDispEventImpl Dispinterface Non Oui
IDispEventSimpleImpleImpl Dispinterface No No

* Lorsque vous utilisez des classes de prise en charge ATL, vous n’êtes jamais obligé d’implémenter manuellement les méthodes ou IDispatch les IUnknown méthodes.

Conseils et annulation de la consultation de la source d’événement

Il existe trois méthodes principales pour conseiller et annuler la consultation d’une source d’événement à l’aide d’ATL.

Fonction Conseiller Fonction Unadvise Le plus adapté à une utilisation avec Vous devez effectuer le suivi d’un cookie Commentaires
AtlAdvise, CComPtrBase ::Advise AtlUnadvise Interfaces vtables ou doubles Oui AtlAdvise est une fonction ATL globale. CComPtrBase::Advise est utilisé par CComPtr et CComQIPtr.
IDispEventSimpleImpl ::D ispEventAdvise IDispEventSimpleImpl ::D ispEventUnadvise IDispEventImpl ou IDispEventSimpleImpl Non Moins de paramètres que AtlAdvise dans la mesure où la classe de base effectue plus de travail.
CComCompositeControl ::AdviseSinkMap(TRUE) CComCompositeControl ::AdviseSinkMap(FALSE) Contrôles ActiveX dans les contrôles composites Non CComCompositeControl::AdviseSinkMap conseille toutes les entrées dans la carte du récepteur d’événements. La même fonction désadvise les entrées. Cette méthode est appelée automatiquement par la CComCompositeControl classe.
CAxDialogImpl ::AdviseSinkMap(TRUE) CAxDialogImpl ::AdviseSinkMap(FALSE) Contrôles ActiveX dans une boîte de dialogue Non CAxDialogImpl::AdviseSinkMap conseille et annule tous les contrôles ActiveX dans la ressource de boîte de dialogue. Cette opération est effectuée automatiquement pour vous.

Voir aussi

Gestion des événements
Prise en charge d’IDispEventImpl