Partager via


Résumé de gestion des événements ATL

Gérer en général des événements COM est un processus relativement simple. Il existe trois étapes principales :

  • Implémentez l'interface d'événements sur votre objet.

  • Informez la source d'événements que votre objet souhaite recevoir des événements.

  • Unadvise la source d'événements lorsque votre objet ne doit plus recevoir des événements.

Implémentation de l'interface

Il existe quatre manières principales d'implémenter une interface à l'aide de ATL.

Dériver de

Approprié pour le type d'interface

Requiert que vous utilisiez implémenter tout le methods*

Requiert une bibliothèque de types au moment de l'exécution

l'interface

Vtable

Oui

Non

IDispatchImpl

Double

Oui

Oui

IDispEventImpl

Dispinterface

Non

Oui

IDispEventSimpleImpl

Dispinterface

Non

Non

* Lors de l'utilisation de la prise en charge ATL classe, vous n'avez jamais tenus d'implémenter les méthodes d' IUnknown ou d' IDispatch manuellement.

Notifier et Unadvising la source d'événements

Il existe trois méthodes principales de notifier et d'unadvising une source d'événements à l'aide de ATL.

Informez la fonction

Fonction d'Unadvise

Le plus approprié pour l'utiliser avec

Requiert soit nécessaire de maintenir un cookie ?

Commentaires

AtlAdvise, CComPtrBase::Advise

AtlUnadvise

Vtable ou une interface double

Oui

AtlAdvise est une fonction globale ATL. CComPtrBase::Advise est utilisé par CComPtr et CComQIPtr.

IDispEventSimpleImpl::DispEventAdvise

IDispEventSimpleImpl::DispEventUnadvise

IDispEventImpl ou IDispEventSimpleImpl

Non

Moins de paramètres qu' AtlAdvise étant donné que la classe de base exécute un travail.

CComCompositeControl::AdviseSinkMap (TRUE)

CComCompositeControl::AdviseSinkMap FALSE ()

Contrôles ActiveX dans des contrôles composites

Non

CComCompositeControl::AdviseSinkMap signale toutes le mappage de récepteur d'entrées dans le. Les mêmes s'exécutent des unadvises les entrées. Cette méthode est appelée automatiquement par la classe d' CComCompositeControl .

CAxDialogImpl::AdviseSinkMap (TRUE)

CAxDialogImpl::AdviseSinkMap FALSE ()

Contrôles ActiveX dans une boîte de dialogue

Non

CAxDialogImpl::AdviseSinkMap avertit et des unadvises tous les contrôles ActiveX dans la ressource de boîte de dialogue. Cela se fait automatiquement pour vous.

Voir aussi

Concepts

Gestion des événements et ATL

IDispEventImpl prenant