Bagikan melalui


Kelas CComObject

Kelas ini mengimplementasikan IUnknown untuk objek nonaggregated.

Sintaks

template<class Base>
class CComObject : public Base

Parameter

Dasar
Kelas Anda, berasal dari CComObjectRoot atau CComObjectRootEx, serta dari antarmuka lain yang ingin Anda dukung pada objek.

Anggota

Konstruktor Publik

Nama Deskripsi
CComObject::CComObject Konstruktor.
CComObject::~CComObject Destruktor.

Metode Publik

Nama Deskripsi
CComObject::AddRef Menaikkan jumlah referensi pada objek.
CComObject::CreateInstance (Statis) Membuat objek baru CComObject .
CComObject::QueryInterface Mengambil penunjuk ke antarmuka yang diminta.
CComObject::Release Mengurangi jumlah referensi pada objek.

Keterangan

CComObjectmengimplementasikan IUnknown untuk objek nonaggregated. Namun, panggilan ke QueryInterface, , dan Release didelegasikan ke CComObjectRootExAddRef.

Untuk informasi selengkapnya tentang menggunakan CComObject, lihat artikel Dasar-Dasar Objek COM ATL.

Hierarki Warisan

Base

CComObject

Persyaratan

Header: atlcom.h

CComObject::AddRef

Menaikkan jumlah referensi pada objek.

STDMETHOD_(ULONG, AddRef)();

Tampilkan Nilai

Fungsi ini mengembalikan jumlah referensi baru yang bertambah pada objek. Nilai ini mungkin berguna untuk diagnostik atau pengujian.

CComObject::CComObject

Konstruktor menaikkan jumlah kunci modul.

CComObject(void* = NULL);

Parameter

kosong*
[di] Parameter yang tidak disebutkan namanya ini tidak digunakan. Itu ada untuk simetri dengan konstruktor lain CComXXXObjectXXX .

Keterangan

Destruktor menguranginya.

CComObjectJika objek -turunan berhasil dibangun menggunakan new operator, jumlah referensi awal adalah 0. Untuk mengatur jumlah referensi ke nilai yang tepat (1), lakukan panggilan ke fungsi AddRef .

CComObject::~CComObject

Destruktor.

CComObject();

Keterangan

Membebaskan semua sumber daya yang dialokasikan, memanggil FinalRelease, dan mengurangi jumlah kunci modul.

CComObject::CreateInstance

Fungsi statis ini memungkinkan Anda membuat objek CComObject><Base baru, tanpa overhead CoCreateInstance.

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

Parameter

Pp
[out] Penunjuk ke penunjuk CComObject><Base. Jika CreateInstance tidak berhasil, pp diatur ke NULL.

Tampilkan Nilai

Nilai HRESULT standar.

Keterangan

Objek yang dikembalikan memiliki jumlah referensi nol, jadi segera panggil AddRef , lalu gunakan Release untuk membebaskan referensi pada penunjuk objek setelah Anda selesai.

Jika Anda tidak memerlukan akses langsung ke objek, tetapi masih ingin membuat objek baru tanpa overhead CoCreateInstance, gunakan CComCoClass::CreateInstance sebagai gantinya.

Contoh

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

Mengambil penunjuk ke antarmuka yang diminta.

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

Parameter

iid
[di] Pengidentifikasi antarmuka yang diminta.

ppvObject
[out] Penunjuk ke penunjuk antarmuka yang diidentifikasi oleh iid. Jika objek tidak mendukung antarmuka ini, ppvObject diatur ke NULL.

Pp
[out] Penunjuk ke penunjuk antarmuka yang diidentifikasi berdasarkan jenis Q. Jika objek tidak mendukung antarmuka ini, pp diatur ke NULL.

Tampilkan Nilai

Nilai HRESULT standar.

CComObject::Release

Mengurangi jumlah referensi pada objek.

STDMETHOD_(ULONG, Release)();

Tampilkan Nilai

Fungsi ini mengembalikan jumlah referensi baru yang direkrementasi pada objek. Dalam build debug, nilai pengembalian mungkin berguna untuk diagnostik atau pengujian. Dalam build non-debug, Release selalu mengembalikan 0.

Lihat juga

Kelas CComAggObject
Kelas CComPolyObject
DECLARE_AGGREGATABLE
DECLARE_NOT_AGGREGATABLE
Gambaran Umum Kelas