templatelt, classecontenus >
class CComPolyObject : public IUnknown, public CComObjectRootEx <contenus:: _ThreadModel::ThreadModelNoCS >
Paramètres
contenus
Votre classe dérivée de CComObjectRoot ou CComObjectRootEx, ainsi que de tout autres interfaces vous souhaitez appuyer sur l'objet.
Implémente CComPolyObject IUnknown pour un objet agrégé ou non agrégée.
Lorsqu'une instance de CComPolyObject est créée, la valeur de l'inconnu externe est vérifiée. Si elle est NULL, IUnknown est mis en œuvre pour un objet non agrégée. Si l'inconnu externe n'est pas NULL, IUnknown est mis en oeuvre pour un objet agrégé.
L'avantage de l'utilisation de CComPolyObject est que vous éviter d'avoir les CComAggObject et CComObject dans votre module pour gérer les affaires agrégés et non agrégées. Un seul objet CComPolyObject gère les deux cas. Cela ne signifie qu'une seule copie de la vtable et une copie des fonctions existent dans votre module. Si votre vtable est importante, cela peut réduire considérablement la taille de votre module. Toutefois, si votre vtable est petite, à l'aide de CComPolyObject peut entraîner une taille légèrement plus grande du module parce qu'il n'est pas optimisé pour un objet agrégé ou non agrégée, comme sont CComAggObject et CComObject.
Si la macro DECLARE_POLY_AGGREGATABLE est spécifiée dans la définition de l'objet de votre classe, CComPolyObject servira pour créer votre objet. DECLARE_POLY_AGGREGATABLE sera automatiquement être déclarée si vous utilisez l'Assistant objet ATL pour créer un contrôle complet ou Internet Explorer.
Si les agrégés, l'objet CComPolyObject a ses propres IUnknown, distinct de l' objet externe de IUnknownet maintient son propre décompte. CComPolyObject utilise CComContainedObject de déléguer à l'extérieur inconnu.
Pour plus d'informations sur l'agrégation, consultez l'article Fondamentaux des objets ATL COM.
# include lt;atlcom.h>
Voir aussi  ;CComObjectRootEx, DECLARE_POLY_AGGREGATABLE