CComPolyObject, classe
Cette classe implémente IUnknown pour un objet de synthèse ou non regroupé en agrégats.
template<
class contained
>
class CComPolyObject : public IUnknown, public CComObjectRootEx
< contained::_ThreadModel::ThreadModelNoCS >
Paramètres
- contained
Votre classe, dérivée de CComObjectRoot ou de CComObjectRootEx, ainsi que de toutes les autres interfaces vous souhaitez prendre en charge sur l'objet.
Membres
Constructeurs publics
Nom |
Description |
---|---|
Constructeur. |
|
Le destructeur. |
Méthodes publiques
Nom |
Description |
---|---|
Incrémente le décompte de références de l'objet. |
|
(Statique) vous permet de créer un objet de CComPolyObject< contained> sans la charge de CoCreateInstance. |
|
Exécute l'initialisation finale d' m_contained. |
|
Exécute la destruction finale d' m_contained. |
|
Extrait un pointeur vers l'interface demandée. |
|
Décrémente le décompte de références de l'objet. |
Données membres publiques
Nom |
Description |
---|---|
Appels d' IUnknown de délégués à l'inconnu externe si l'objet est regroupé ou à IUnknown de l'objet si l'objet n'est pas regroupé. |
Notes
CComPolyObject implémente IUnknown pour un objet de synthèse ou non regroupé en agrégats.
Lorsqu'une instance d' CComPolyObject est créée, la valeur de l'inconnu externe est activée. Si c'est NULL, IUnknown est implémenté pour un objet non regroupé en agrégats. Si l'inconnu externe n'est pas NULL, IUnknown est implémenté pour un objet regroupé en agrégats.
l'avantage d'utiliser CComPolyObject est que vous évitez d'avoir CComAggObject et CComObject dans votre module pour traiter les cas de synthèse et non regroupés en agrégats. Handles d'objet unique d' CComPolyObject les deux cas. Cela signifie qu'une copie du pointeur vtable et une copie des fonctions existent dans votre package. Si votre pointeur vtable est important, cela peut considérablement réduire la taille du module. Toutefois, si votre pointeur vtable est petite, à l'aide de CComPolyObject peuvent entraîner une taille légèrement plus grande de module car elle n'est pas optimisée pour un objet de synthèse ou non regroupé en agrégats, de même qu' CComAggObject et CComObject.
Si la macro d' DECLARE_POLY_AGGREGATABLE spécifiée dans la définition de classe de votre objet, CComPolyObject sera utilisé pour créer votre objet. DECLARE_POLY_AGGREGATABLE sera automatiquement déclaré si vous utilisez l'Assistant Projet ATL pour créer un contrôle total ou un contrôle d'Internet Explorer.
Si regroupé, l'objet d' CComPolyObject a son propre IUnknown, distinct d' IUnknownexterne de l'objet, et met à jour son propre décompte de références. CComPolyObject utilise CComContainedObject pour le déléguer à l'inconnu externe.
Pour plus d'informations sur le regroupement, consultez l'article Notions de base des objets COM ATL.
Hiérarchie d'héritage
CComObjectRootBase
IUnknown
CComPolyObject
Configuration requise
Header: atlcom.h