Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Uyarı
Etkin Şablon Kitaplığı (ATL) desteklenmeye devam eder. Ancak artık özellik eklemeyeceğiz veya belgeleri güncelleştirmeyeceğiz.
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, , QueryInterfaceve AddRef çağrıları Releaseiçin CComObjectRootExtemsilci olarak sağlanır.
kullanma CComObjecthakkı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 CComObject<Base> nesnesi oluşturmanıza olanak tanır.
static HRESULT WINAPI CreateInstance(CComObject<Base>** pp);
Parametreler
Pp
[out] CComObject<Base>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ü CoCreateInstanceolmadan 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 Qgö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ış