Partager via


De macros COM_INTERFACE_ENTRY

Ces macros entrez les interfaces d'un objet dans son mappage COM afin qu'elles puissent être accessibles par QueryInterface. L'ordre des entrées dans le mappage COM sont les interfaces de commande est activée pour IID correspondant au cours de l' QueryInterface.

Chaque objet qui souhaite exposer ses interfaces via QueryInterface doit avoir son propre mappage COM. Le démarrage de mappage COM avec un BEGIN_COM_MAP. Les entrées d'interface sont ajoutées à un ou plusieurs des macros de COM_INTERFACE_ENTRY , et le mappage est terminée la macro d' END_COM_MAP . Par exemple :

BEGIN_COM_MAP(CMyObject)
   COM_INTERFACE_ENTRY(IMyObject)
   COM_INTERFACE_ENTRY(IDispatch)
END_COM_MAP()

Notez que la première entrée dans le mappage COM doit être une interface sur l'objet contenant le mappage COM. Par conséquent, vous ne pouvez pas démarrer vos entrées de mappage COM avec COM_INTERFACE_ENTRY_CHAIN, qui entraîne le mappage COM d'un autre objet d'être trouvé au point où COM_INTERFACE_ENTRY_CHAIN(COtherObject) apparaît dans le mappage COM de votre objet. Si vous souhaitez rechercher le mappage COM d'un autre objet d'abord, ajoutez une entrée d'interface pour IUnknown à votre mappage COM, puis chaînez de l'autre le mappage COM objet. Par exemple :

BEGIN_COM_MAP(CThisObject)
   COM_INTERFACE_ENTRY(IUnknown)
   COM_INTERFACE_ENTRY_CHAIN(CBase)
END_COM_MAP()

Avertissement

As of la version 3,0, ATL utilise le mot clé __uuidof( class ) de compilateur pour obtenir l'IID correspondant pour une classe donnée.En raison de les modifications des macros de COM_INTERFACE_ENTRY pertinentes dans la version 3,0, maintenant vous incluez simplement l'en-tête pour l'interface pour utiliser, au lieu de joindre également à une bibliothèque qui définit la correspondance IID de cette interface.Cette modification peut provoquer des problèmes si l'en-tête était précédemment généré par une version antérieure de MIDL, ou s'il main- a été codé et pas marqué correctement.Si la déclaration de l'interface dans l'en-tête n'a pas été marquée avecun uuidassocié )de __declspec( , puis toute tentative d'utiliser le mot clé d' __uuidof pour cette interface échoue.Vous pouvez rétablir le plus ancien (les macros ATL 2.x) COM_INTERFACE_ENTRY en définissant _ATL_NO_UUIDOF dans vos paramètres de génération au travail autour de tous problèmes avec ce nouveau comportement.

Macros d'entrées de mappage COM

Voici des macros d'entrées disponibles :

Configuration requise

Header: atlcom.h

Voir aussi

Autres ressources

Macros de mappage COM

Macros ATL