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
CComObject
mengimplementasikan IUnknown untuk objek nonaggregated. Namun, panggilan ke QueryInterface
, , dan Release
didelegasikan ke CComObjectRootEx
AddRef
.
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.
CComObject
Jika 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