Implémenter l'interface de gestion des événements
ATL vous aide à chacun des trois éléments requis pour gérer des événements : implémentant l'interface d'événement, informant la source d'événement, et unadvising la source d'événement. Les dimensions exactes que vous devez prendre dépendent du type de l'interface d'événement et des spécifications de performances de votre application.
Les méthodes les plus courantes pour implémenter une interface à l'aide de ATL sont :
Dérivation d'une interface personnalisée directement.
Dérivation d' IDispatchImpl pour les interfaces doubles décrites dans une bibliothèque de types.
Dérivation d' IDispEventImpl pour les dispinterfaces décrites dans une bibliothèque de types.
Dérivation d' IDispEventSimpleImpl pour les dispinterfaces non décrites dans une bibliothèque de types ou lorsque vous souhaitez améliorer l'efficacité en chargeant ne pas les informations de type au moment de l'exécution.
Si vous implémentez un personnalisé ou une interface double, vous devez indiquer à la source de l'événement en appelant AtlAdvise ou CComPtrBase::Advise. Vous devez stocker le cookie retourné par l'appel vous-même. Appel AtlUnadvise pour arrêter la connexion.
Si vous implémentez une dispinterface à l'aide de IDispEventImpl ou IDispEventSimpleImpl, vous devez indiquer à la source de l'événement en appelant IDispEventSimpleImpl::DispEventAdvise. Appel IDispEventSimpleImpl::DispEventUnadvise pour arrêter la connexion.
Si vous utilisez IDispEventImpl comme classe de base d'un contrôle composite, les sources d'événements répertoriées dans le mappage de récepteur sont conseillées et imprudentes automatiquement à l'aide de CComCompositeControl::AdviseSinkMap.
Les classes d' IDispEventImpl et d' IDispEventSimpleImpl gèrent le cookie pour vous.