Classe CComObject
Questa classe implementa IUnknown
per un oggetto nonaggregato.
Sintassi
template<class Base>
class CComObject : public Base
Parametri
Base
La classe, derivata da CComObjectRoot o CComObjectRootEx, nonché da qualsiasi altra interfaccia che si vuole supportare sull'oggetto.
Membri
Costruttori pubblici
Nome | Descrizione |
---|---|
CComObject::CComObject | Costruttore. |
CComObject::~CComObject | Distruttore. |
Metodi pubblici
Nome | Descrizione |
---|---|
CComObject::AddRef | Incrementa il conteggio dei riferimenti sull'oggetto . |
CComObject::CreateInstance | (Statico) Crea un nuovo CComObject oggetto. |
CComObject::QueryInterface | Recupera un puntatore all'interfaccia richiesta. |
CComObject::Release | Decrementa il conteggio dei riferimenti sull'oggetto . |
Osservazioni:
CComObject
implementa IUnknown per un oggetto nonaggregato. Tuttavia, le chiamate a QueryInterface
, AddRef
e Release
vengono delegate a CComObjectRootEx
.
Per altre informazioni sull'uso CComObject
di , vedere l'articolo Nozioni fondamentali sugli oggetti COM ATL.
Gerarchia di ereditarietà
Base
CComObject
Requisiti
Intestazione: atlcom.h
CComObject::AddRef
Incrementa il conteggio dei riferimenti sull'oggetto .
STDMETHOD_(ULONG, AddRef)();
Valore restituito
Questa funzione restituisce il nuovo conteggio dei riferimenti incrementati sull'oggetto . Questo valore può essere utile per la diagnostica o il test.
CComObject::CComObject
Il costruttore incrementa il numero di blocchi del modulo.
CComObject(void* = NULL);
Parametri
vuoto*
[in] Questo parametro senza nome non viene usato. Esiste per la simmetria con altri CComXXXObjectXXX
costruttori.
Osservazioni:
Il distruttore lo decrementa.
Se un CComObject
oggetto derivato da viene costruito correttamente usando l'operatore new
, il conteggio dei riferimenti iniziale è 0. Per impostare il conteggio dei riferimenti sul valore appropriato (1), effettuare una chiamata alla funzione AddRef .
CComObject::~CComObject
Distruttore.
CComObject();
Osservazioni:
Libera tutte le risorse allocate, chiama FinalRelease e decrementa il conteggio dei blocchi del modulo.
CComObject::CreateInstance
Questa funzione statica consente di creare un nuovo oggetto CComObjectBase
><, senza sovraccarico di CoCreateInstance.
static HRESULT WINAPI CreateInstance(CComObject<Base>** pp);
Parametri
Pp
[out] Puntatore a un puntatore CComObject><Base
. Se CreateInstance
ha esito negativo, pp è impostato su NULL.
Valore restituito
Valore HRESULT standard.
Osservazioni:
L'oggetto restituito ha un conteggio dei riferimenti pari a zero, quindi chiamare AddRef
immediatamente, quindi usare Release
per liberare il riferimento sul puntatore all'oggetto al termine.
Se non è necessario l'accesso diretto all'oggetto, ma si vuole comunque creare un nuovo oggetto senza sovraccarico di CoCreateInstance
, usare invece CComCoClass::CreateInstance .
Esempio
class ATL_NO_VTABLE CMyCircle :
public CComObjectRootEx<CComSingleThreadModel>,
public CComCoClass<CMyCircle, &CLSID_MyCircle>,
public IDispatchImpl<IMyCircle, &IID_IMyCircle, &LIBID_NVC_ATL_COMLib, /*wMajor =*/ 1, /*wMinor =*/ 0>
{
public:
CMyCircle()
{
}
DECLARE_REGISTRY_RESOURCEID(IDR_MYCIRCLE)
DECLARE_NOT_AGGREGATABLE(CMyCircle)
BEGIN_COM_MAP(CMyCircle)
COM_INTERFACE_ENTRY(IMyCircle)
COM_INTERFACE_ENTRY(IDispatch)
END_COM_MAP()
DECLARE_PROTECT_FINAL_CONSTRUCT()
HRESULT FinalConstruct()
{
return S_OK;
}
void FinalRelease()
{
}
public:
public:
STDMETHOD(get_XCenter)(double* pVal);
};
// Create a local instance of COM object CMyCircle.
double x;
CComObject<CMyCircle>* pCircle;
HRESULT hRes = CComObject<CMyCircle>::CreateInstance(&pCircle);
ATLASSERT(SUCCEEDED(hRes));
// Increment reference count immediately
pCircle->AddRef();
// Access method of COM object
hRes = pCircle->get_XCenter(&x);
// Decrement reference count when done
pCircle->Release();
pCircle = NULL;
CComObject::QueryInterface
Recupera un puntatore all'interfaccia richiesta.
STDMETHOD(QueryInterface)(REFIID iid, void** ppvObject);
template <class Q>
HRESULT STDMETHODCALLTYPE QueryInterface(Q** pp);
Parametri
iid
[in] Identificatore dell'interfaccia richiesta.
ppvObject
[out] Puntatore al puntatore dell'interfaccia identificato da iid. Se l'oggetto non supporta questa interfaccia, ppvObject è impostato su NULL.
Pp
[out] Puntatore al puntatore dell'interfaccia identificato dal tipo Q
. Se l'oggetto non supporta questa interfaccia, pp è impostato su NULL.
Valore restituito
Valore HRESULT standard.
CComObject::Release
Decrementa il conteggio dei riferimenti sull'oggetto .
STDMETHOD_(ULONG, Release)();
Valore restituito
Questa funzione restituisce il nuovo conteggio dei riferimenti decrementati sull'oggetto . Nelle compilazioni di debug il valore restituito può essere utile per la diagnostica o il test. Nelle compilazioni non di debug restituisce Release
sempre 0.
Vedi anche
Classe CComAggObject
Classe CComPolyObject
DECLARE_AGGREGATABLE
DECLARE_NOT_AGGREGATABLE
Cenni preliminari sulla classe