Sdílet prostřednictvím


CComObject – třída

Tato třída implementuje IUnknown pro neagregovaný objekt.

Syntaxe

template<class Base>
class CComObject : public Base

Parametry

Základní
Třída odvozená z CComObjectRoot nebo CComObjectRootEx, stejně jako z jakéhokoli jiného rozhraní, které chcete podporovat u objektu.

Členové

Veřejné konstruktory

Jméno popis
CComObject::CComObject Konstruktor
CComObject::~CComObject Destruktor.

Veřejné metody

Jméno popis
CComObject::AddRef Zvýší počet odkazů na objekt.
CComObject::CreateInstance (Statické) Vytvoří nový CComObject objekt.
CComObject::QueryInterface Načte ukazatel na požadované rozhraní.
CComObject::Release Sníží počet odkazů na objekt.

Poznámky

CComObject implementuje IUnknown pro neagregovaný objekt. Nicméně, volání QueryInterface, AddRefa Release jsou delegovány na CComObjectRootEx.

Další informace o použití CComObjectnaleznete v článku Základy ATL COM Objekty.

Hierarchie dědičnosti

Base

CComObject

Požadavky

Hlavička: atlcom.h

CComObject::AddRef

Zvýší počet odkazů na objekt.

STDMETHOD_(ULONG, AddRef)();

Vrácená hodnota

Tato funkce vrátí nový přírůstek počtu odkazů na objekt. Tato hodnota může být užitečná pro diagnostiku nebo testování.

CComObject::CComObject

Konstruktor zvýší počet zámků modulu.

CComObject(void* = NULL);

Parametry

Void*
[v] Tento nepojmenovaný parametr se nepoužívá. Existuje pro symetrii s jinými CComXXXObjectXXX konstruktory.

Poznámky

Destruktor ho dekrementuje.

CComObjectPokud je objekt -odvozený úspěšně vytvořen pomocí operátorunew, počáteční počet odkazů je 0. Chcete-li nastavit počet odkazů na správnou hodnotu (1), proveďte volání funkce AddRef .

CComObject::~CComObject

Destruktor.

CComObject();

Poznámky

Uvolní všechny přidělené prostředky, zavolá FinalRelease a sníží počet zámků modulu.

CComObject::CreateInstance

Tato statická funkce umožňuje vytvořit nový objekt CComObjectBase>< bez režie NaCreateInstance.

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

Parametry

Stran
[ven] Ukazatel na ukazatel CComObject><Base. Pokud CreateInstance je neúspěšný, hodnota pp je nastavena na hodnotu NULL.

Vrácená hodnota

Standardní hodnota HRESULT.

Poznámky

Vrácený objekt má počet odkazů na nulu, takže volání AddRef okamžitě použijte Release k uvolnění odkazu na ukazatel objektu, jakmile budete hotovi.

Pokud nepotřebujete přímý přístup k objektu, ale přesto chcete vytvořit nový objekt bez režijních CoCreateInstancenákladů , použijte místo toho CComCoClass::CreateInstance .

Příklad

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

Načte ukazatel na požadované rozhraní.

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

Parametry

Iid
[v] Identifikátor požadovaného rozhraní.

ppvObject
[ven] Ukazatel na ukazatel rozhraní identifikovaný pomocí iid. Pokud objekt nepodporuje toto rozhraní, ppvObject je nastaven na HODNOTU NULL.

Stran
[ven] Ukazatel na ukazatel rozhraní identifikovaný podle typu Q. Pokud objekt nepodporuje toto rozhraní, pp je nastavena na HODNOTU NULL.

Vrácená hodnota

Standardní hodnota HRESULT.

CComObject::Release

Sníží počet odkazů na objekt.

STDMETHOD_(ULONG, Release)();

Vrácená hodnota

Tato funkce vrátí nový dekrementovaný počet odkazů na objekt. V buildech ladění může být návratová hodnota užitečná pro diagnostiku nebo testování. V neladit sestavení vždy Release vrátí hodnotu 0.

Viz také

CComAggObject – třída
CComPolyObject – třída
DECLARE_AGGREGATABLE
DECLARE_NOT_AGGREGATABLE
Přehled třídy