Megosztás a következőn keresztül:


CComObject osztály

Megjegyzés:

Az aktív sablontár (ATL) továbbra is támogatott. A továbbiakban azonban nem adunk hozzá funkciókat, és nem frissítjük a dokumentációt.

Ez az osztály egy nem összesített objektumot implementál IUnknown .

Szemantika

template<class Base>
class CComObject : public Base

Paraméterek

Base
Az osztály a CComObjectRoot vagy a CComObjectRootEx, valamint az objektumon támogatni kívánt egyéb felületekből származik.

Tagok

Nyilvános konstruktorok

Név Description
CComObject::CComObject A konstruktor.
CComObject::~CComObject A destruktor.

Nyilvános módszerek

Név Description
CComObject::AddRef Növeli az objektum referenciaszámát.
CComObject::CreateInstance (Statikus) Új objektumot CComObject hoz létre.
CComObject::QueryInterface A kért felületre mutató mutatót kér le.
CComObject::Release Az objektum hivatkozásainak száma csökken.

Megjegyzések

CComObject IUnknown-et implementál egy nem összesített objektumhoz. A hívásokat azonban a rendszer a következőre QueryInterfaceAddRefRelease delegáljaCComObjectRootEx: .

A használatról CComObjecttovábbi információt az ATL COM-objektumok alapjai című cikkben talál.

Öröklési hierarchia

Base

CComObject

Requirements

Fejléc: atlcom.h

CComObject::AddRef

Növeli az objektum referenciaszámát.

STDMETHOD_(ULONG, AddRef)();

Visszaadott érték

Ez a függvény az objektum új növekményes hivatkozásszámát adja vissza. Ez az érték diagnosztikához vagy teszteléshez lehet hasznos.

CComObject::CComObject

A konstruktor növeli a modul zárolási számát.

CComObject(void* = NULL);

Paraméterek

Void*
[in] A rendszer nem használja ezt a névtelen paramétert. Létezik szimmetria más CComXXXObjectXXX konstruktorokkal.

Megjegyzések

A destruktor megtizedeli.

Ha az operátorral new sikeresen létrejön egy CComObject-származtatott objektum, a kezdeti hivatkozási szám 0. Ha a hivatkozásszámot a megfelelő értékre (1) szeretné állítani, hívja fel az AddRef függvényt.

CComObject::~CComObject

A destruktor.

CComObject();

Megjegyzések

Felszabadítja az összes lefoglalt erőforrást, meghívja a FinalRelease-t, és lecsökkenti a modul zárolási számát.

CComObject::CreateInstance

Ez a statikus függvény lehetővé teszi egy új CComObject<Base> objektum létrehozását a CoCreateInstance többletterhelése nélkül.

static HRESULT WINAPI CreateInstance(CComObject<Base>** pp);

Paraméterek

Pp
[kifelé] Egy CComObject-mutatóra<Base> mutató mutató. Sikertelenség esetén CreateInstance a pp értéke NULL.

Visszaadott érték

Standard HRESULT érték.

Megjegyzések

A visszaadott objektum hivatkozási száma nulla, ezért azonnal hívja meg AddRef , majd használja Release a hivatkozás felszabadítására az objektummutatón, amikor elkészült.

Ha nincs szüksége közvetlen hozzáférésre az objektumhoz, de mégis szeretne létrehozni egy új objektumot a többletterhelés CoCreateInstancenélkül, használja helyette a CComCoClass::CreateInstance parancsot .

Example

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

A kért felületre mutató mutatót kér le.

STDMETHOD(QueryInterface)(REFIID iid, void** ppvObject);
template <class Q>
HRESULT STDMETHODCALLTYPE QueryInterface(Q** pp);

Paraméterek

iid
[in] A kért felület azonosítója.

ppvObject
[kifelé] Az iid által azonosított felületmutatóra mutató mutató. Ha az objektum nem támogatja ezt az interfészt, a ppvObject értéke NULL.

Pp
[kifelé] Az illesztőmutatóra mutató mutató, amely típus Qszerint van azonosítva. Ha az objektum nem támogatja ezt az interfészt, a pp értéke NULL.

Visszaadott érték

Standard HRESULT érték.

CComObject::Release

Az objektum hivatkozásainak száma csökken.

STDMETHOD_(ULONG, Release)();

Visszaadott érték

Ez a függvény az objektum új dekrementált hivatkozási számát adja vissza. Hibakeresési buildekben a visszatérési érték hasznos lehet a diagnosztika vagy a tesztelés során. A nem hibakeresési buildekben Release mindig 0 értéket ad vissza.

Lásd még

CComAggObject osztály
CComPolyObject osztály
DECLARE_AGGREGATABLE
DECLARE_NOT_AGGREGATABLE
osztály áttekintése