Condividi tramite


CComPolyObject Class

Questa classe implementa IUnknown per un oggetto aggregato o non aggregato.

template< 
   class contained  
> 
class CComPolyObject : public IUnknown, public CComObjectRootEx 
   < contained::_ThreadModel::ThreadModelNoCS >

Parametri

Membri

Costruttori pubblici

Nome

Descrizione

CComPolyObject::CComPolyObject

Costruttore.

CComPolyObject::~CComPolyObject

Il distruttore.

Metodi pubblici

Nome

Descrizione

CComPolyObject::AddRef

Incrementa il conteggio dei riferimenti dell'oggetto.

CComPolyObject::CreateInstance

(Proprietà statica) consente di creare un nuovo oggetto CComPolyObject< contained> senza il sovraccarico CoCreateInstance.

CComPolyObject::FinalConstruct

Esegue un'inizializzazione finale m_contained.

CComPolyObject::FinalRelease

Esegue la distruzione finale m_contained.

CComPolyObject::QueryInterface

Recupera un puntatore a un'interfaccia richiesta.

CComPolyObject::Release

Decrementa il conteggio dei riferimenti dell'oggetto.

Membri dati pubblici

Nome

Descrizione

CComPolyObject::m_contained

Chiamate IUnknown di delegati a sconosciuto esterno se l'oggetto è aggregato o a IUnknown dell'oggetto se l'oggetto non verranno aggregati.

Note

CComPolyObject implementa IUnknown per un oggetto aggregato o non aggregato.

Quando un'istanza CComPolyObject viene creata, il valore di sconosciuto esterno sia selezionata. Se è NULL, IUnknown viene implementato per un oggetto non aggregato. Se sconosciuto esterno non è NULL, IUnknown viene implementato per un oggetto aggregato.

Il vantaggio di l CComPolyObject è di evitare di avere sia CComAggObject che CComObject nel modulo per gestire i casi aggregati e non aggregati. Singole un oggetto CComPolyObject entrambi i casi. Questo significa che una sola copia di vtable e una copia delle funzioni esistenti nel form. Se il riferimento è elevata, questo può ridurre notevolmente la dimensione del modulo. Tuttavia, se il riferimento è ridotto, utilizzando CComPolyObject possono comportare una dimensione leggermente più grande del modulo perché non è ottimizzata per un oggetto aggregato o non aggregato, come vengono CComAggObject e CComObject.

Se la macro DECLARE_POLY_AGGREGATABLE specificata nella definizione di classe dell'oggetto, CComPolyObject verrà utilizzato per creare l'oggetto. DECLARE_POLY_AGGREGATABLE verrà automaticamente dichiarato se si utilizza la procedura guidata progetto ATL per creare un controllo completo o un controllo Internet Explorer.

Se aggregato, l'oggetto CComPolyObject dispone di un proprio IUnknown, separati da IUnknownesterno dell'oggetto e mantiene il relativo conteggio dei riferimenti. CComPolyObject utilizza CComContainedObject delegare sconosciuto esterno.

Per ulteriori informazioni su aggregazione, vedere l'articolo Principi fondamentali di oggetti COM ATL.

Gerarchia di ereditarietà

CComObjectRootBase

CComObjectRootEx

IUnknown

CComPolyObject

Requisiti

Header: atlcom.h

Vedere anche

Riferimenti

CComObjectRootEx Class

DECLARE_POLY_AGGREGATABLE

Altre risorse

ATL Class Overview