Partager via


Notions de base des objets COM ATL

L'illustration suivante représente la relation entre les classes et les interfaces utilisées pour définir un objet ATL COM.

Structure ATL

Notes

Ce diagramme montre qu' CComObject est dérivé d' CYourClass pendant qu' CComAggObject et CComPolyObject incluent CYourClass comme variable membre.

Il existe trois façons de définir un objet ATL COM. L'option standard est d'utiliser la classe d' CComObject dérivée d' CYourClass. La deuxième option consiste à créer un objet regroupé en agrégats à l'aide de la classe d' CComAggObject . La troisième option consiste à utiliser la classe d' CComPolyObject . CComPolyObject agit comme un hybride : il peut fonctionner comme une classe d' CComObject ou comme classe d' CComAggObject , selon la façon dont il est d'abord créé. Pour plus d'informations sur l'utilisation de la classe CComPolyObject, consultez CComPolyObject, classe.

Lorsque vous utilisez ATL COM standard, vous utilisez deux objets : un objet externe et un objet interne. Les clients externes accèdent aux fonctionnalités de l'objet interne via les fonctions wrapper qui sont définies dans l'objet externe. l'objet externe est de type CComObject.

Lorsque vous utilisez un objet regroupé en agrégats, l'objet externe ne fournit pas les wrappers pour les fonctionnalités de l'objet interne. Au lieu de cela, l'objet externe fournit un pointeur qui est directement accessible par les clients externes. Dans ce cas, l'objet externe est de type CComAggObject. l'objet interne est une variable membre de l'objet externe, et il est de type CYourClass.

Étant donné que le client ne doit pas passer par l'objet externe pour interagir avec l'objet interne, les objets regroupés en agrégats sont généralement plus efficaces. De plus, l'objet externe ne doit pas connaître les fonctionnalités de l'objet regroupé en agrégats, dans la mesure où l'interface de l'objet regroupé en agrégats est directement à la disposition du client. Toutefois, tous les objets peuvent être regroupés. Pour qu'un objet est regroupé, il doit être conçu avec une agrégation à l'esprit.

Implémente IUnknown ATL en deux phases :

D'autres aspects de votre objet ATL COM sont traités par d'autres classes :

  • CComCoClass définit le modèle par défaut de la fabrique de classe et le regroupement de l'objet.

  • IDispatchImpl fournit une implémentation par défaut de la partie d' IDispatch Interface de toutes les interfaces doubles sur l'objet.

  • ISupportErrorInfoImpl implémente l'interface d' ISupportErrorInfo qui vérifie les informations d'erreur peut être propagée vers le haut de la chaîne d'appels correctement.

Dans cette section

Rubriques connexes

  • créer un projet ATL
    Fournit des informations sur la création d'un objet ATL COM.

  • ATL
    Fournit des liens vers des rubriques conceptuelles sur comment programmer avec la bibliothèque ATL.

Voir aussi

Autres ressources

Concepts ATL