Implémentation d’une interface double
Vous pouvez implémenter une interface double à l’aide de la classe IDispatchImpl , qui fournit une implémentation par défaut des IDispatch
méthodes dans une interface double. Pour plus d'informations, consultez Implementing the IDispatch Interface.
Pour utiliser cette classe :
Définissez votre double interface dans une bibliothèque de types.
Dérivez votre classe d’une spécialisation de
IDispatchImpl
(transmettez des informations sur l’interface et la bibliothèque de types en tant qu’arguments de modèle).Ajoutez une entrée (ou des entrées) à la carte COM pour exposer l’interface double via
QueryInterface
.Implémentez la partie vtable de l’interface dans votre classe.
Vérifiez que la bibliothèque de types contenant la définition d’interface est disponible pour vos objets au moment de l’exécution.
Assistant Objet simple ATL
Si vous souhaitez créer une interface et une nouvelle classe pour l’implémenter, vous pouvez utiliser la boîte de dialogue Ajouter une classe ATL, puis l’Assistant Objet simple ATL.
Assistant Implémentation d'interface
Si vous disposez d’une interface existante, vous pouvez utiliser l’Assistant Implémenter l’interface pour ajouter la classe de base nécessaire, les entrées de mappage COM et les implémentations de méthode squelette à une classe existante.
Remarque
Vous devrez peut-être ajuster la classe de base générée afin que les numéros de version principale et secondaire de la bibliothèque de types soient transmis en tant qu’arguments de modèle à votre IDispatchImpl
classe de base. L’Assistant Implémenter l’interface n’case activée pas le numéro de version de la bibliothèque de types pour vous.
Implémentation d’IDispatch
Vous pouvez utiliser une IDispatchImpl
classe de base pour fournir une implémentation d’une dispinterface simplement en spécifiant l’entrée appropriée dans la carte COM (à l’aide de la macro COM_INTERFACE_ENTRY2 ou COM_INTERFACE_ENTRY_IID ) tant que vous disposez d’une bibliothèque de types décrivant une interface double correspondante. Il est très courant d’implémenter l’interface IDispatch
de cette façon, par exemple. L’Assistant Objet simple ATL et l’Assistant Implémentation de l’interface supposent que vous avez l’intention d’implémenter IDispatch
de cette façon, afin qu’ils ajoutent l’entrée appropriée à la carte.
Remarque
ATL offre les classes IDispEventImpl et IDispEventSimpleImpl pour vous aider à implémenter des dispinterfaces sans nécessiter de bibliothèque de types contenant la définition d’une interface double compatible.