CComObject Sınıfı
Bu sınıf, toplanmamış bir nesne için uygular IUnknown
.
Sözdizimi
template<class Base>
class CComObject : public Base
Parametreler
Taban
Sınıfınız, CComObjectRoot veya CComObjectRootEx'ten ve nesne üzerinde desteklemek istediğiniz diğer arabirimlerden türetilir.
Üyeler
Ortak Oluşturucular
Veri Akışı Adı | Açıklama |
---|---|
CComObject::CComObject | Oluşturucu. |
CComObject::~CComObject | Yok edici. |
Genel Yöntemler
Veri Akışı Adı | Açıklama |
---|---|
CComObject::AddRef | Nesnedeki başvuru sayısını artırır. |
CComObject::CreateInstance | (Statik) Yeni CComObject bir nesne oluşturur. |
CComObject::QueryInterface | İstenen arabirim için bir işaretçi alır. |
CComObject::Release | Nesnedeki başvuru sayısını azaltma. |
Açıklamalar
CComObject
, bir nonaggregated nesnesi için IUnknown uygular. Ancak, , AddRef
ve Release
çağrıları QueryInterface
için CComObjectRootEx
temsilci olarak sağlanır.
kullanma CComObject
hakkında daha fazla bilgi için ATL COM Nesnelerinin Temelleri makalesine bakın.
Devralma Hiyerarşisi
Base
CComObject
Gereksinimler
Üst bilgi: atlcom.h
CComObject::AddRef
Nesnedeki başvuru sayısını artırır.
STDMETHOD_(ULONG, AddRef)();
Dönüş Değeri
Bu işlev nesnedeki yeni artımlı başvuru sayısını döndürür. Bu değer tanılama veya test için yararlı olabilir.
CComObject::CComObject
Oluşturucu, modül kilit sayısını artırır.
CComObject(void* = NULL);
Parametreler
boşluk*
[in] Bu adlandırılmamış parametre kullanılmaz. Diğer CComXXXObjectXXX
oluşturucularla simetri için mevcuttur.
Açıklamalar
Yok edici onu yok eder.
CComObject
-derived nesnesi işleci kullanılarak new
başarıyla oluşturulursa, ilk başvuru sayısı 0'dır. Başvuru sayısını uygun değere (1) ayarlamak için AddRef işlevine bir çağrı yapın.
CComObject::~CComObject
Yok edici.
CComObject();
Açıklamalar
Ayrılan tüm kaynakları serbest bırakma, FinalRelease çağrısı yapma ve modül kilitleme sayısını azaltma.
CComObject::CreateInstance
Bu statik işlev, CoCreateInstance ek yükü olmadan yeni bir CComObjectBase
>< nesnesi oluşturmanıza olanak tanır.
static HRESULT WINAPI CreateInstance(CComObject<Base>** pp);
Parametreler
Pp
[out] CComObject<>Base
işaretçisine bir işaretçi. Başarısız olursa CreateInstance
, pp null olarak ayarlanır.
Dönüş Değeri
Standart bir HRESULT değeri.
Açıklamalar
Döndürülen nesnenin başvuru sayısı sıfır olduğundan hemen çağırın AddRef
, ardından Release
işiniz bittiğinde nesne işaretçisinde başvuruyu serbest bırakın.
Nesnesine doğrudan erişime ihtiyacınız yoksa, ancak yine de ek yükü CoCreateInstance
olmadan yeni bir nesne oluşturmak istiyorsanız, bunun yerine CComCoClass::CreateInstance kullanın.
Örnek
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
İstenen arabirim için bir işaretçi alır.
STDMETHOD(QueryInterface)(REFIID iid, void** ppvObject);
template <class Q>
HRESULT STDMETHODCALLTYPE QueryInterface(Q** pp);
Parametreler
iid
[in] İstenen arabirimin tanımlayıcısı.
ppvObject
[out] iid ile tanımlanan arabirim işaretçisinin işaretçisi. Nesne bu arabirimi desteklemiyorsa, ppvObject NULL olarak ayarlanır.
Pp
[out] türüne Q
göre tanımlanan arabirim işaretçisinin işaretçisi. Nesne bu arabirimi desteklemiyorsa, pp null olarak ayarlanır.
Dönüş Değeri
Standart bir HRESULT değeri.
CComObject::Release
Nesnedeki başvuru sayısını azaltma.
STDMETHOD_(ULONG, Release)();
Dönüş Değeri
Bu işlev nesnedeki yeni azalan başvuru sayısını döndürür. Hata ayıklama derlemelerinde, dönüş değeri tanılama veya test için yararlı olabilir. Hata ayıklama olmayan derlemelerde Release
her zaman 0 döndürür.
Ayrıca bkz.
CComAggObject Sınıfı
CComPolyObject Sınıfı
DECLARE_AGGREGATABLE
DECLARE_NOT_AGGREGATABLE
Sınıfa Genel Bakış