Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
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, AddRefe Release vengono delegate a CComObjectRootEx.
Per altre informazioni sull'uso CComObjectdi , 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 CComObjectoggetto 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