Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
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