CComPolyObject Sınıfı
Bu sınıf, toplanmış veya toplanmamış bir nesne için uygular IUnknown
.
Sözdizimi
template<class contained>
class CComPolyObject : public IUnknown,
public CComObjectRootEx<contained::_ThreadModel::ThreadModelNoCS>
Parametreler
Bulunan
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 |
---|---|
CComPolyObject::CComPolyObject | Oluşturucu. |
CComPolyObject::~CComPolyObject | Yok edici. |
Genel Yöntemler
Veri Akışı Adı | Açıklama |
---|---|
CComPolyObject::AddRef | Nesnenin başvuru sayısını artırır. |
CComPolyObject::CreateInstance | (Statik) CoCreateInstance yükü olmadan yeni bir CComPolyObject contained ><nesnesi oluşturmanıza olanak tanır. |
CComPolyObject::FinalConstruct | öğesinin son başlatma işlemini m_contained gerçekleştirir. |
CComPolyObject::FinalRelease | son yok etme işlemini m_contained gerçekleştirir. |
CComPolyObject::QueryInterface | İstenen arabirim için bir işaretçi alır. |
CComPolyObject::Release | Nesnenin başvuru sayısını azaltma. |
Ortak Veri Üyeleri
Veri Akışı Adı | Açıklama |
---|---|
CComPolyObject::m_contained | Temsilciler IUnknown , nesne toplanırsa dış bilinmeyene IUnknown veya nesne toplanmazsa nesnenin öğesine çağrılar. |
Açıklamalar
CComPolyObject
toplanan veya toplanmamış bir nesne için IUnknown uygular.
Bir örneği CComPolyObject
oluşturulduğunda, dış bilinmeyenin değeri denetlener. NULL ise, IUnknown
toplama yapılmamış bir nesne için uygulanır. Dış bilinmeyen NULL değilse, IUnknown
toplanan nesne için uygulanır.
Kullanmanın CComPolyObject
avantajı, toplanan ve toplanmamış durumları işlemek için modülünüzde hem CComAggObject hem de CComObject olmasını önlemenizdir. Tek CComPolyObject
bir nesne her iki durumu da işler. Bu, modülünüzde vtable'ın yalnızca bir kopyası ve işlevlerin bir kopyası olduğu anlamına gelir. Vtable'ınız büyükse bu, modülünüzün boyutunu önemli ölçüde azaltabilir. Ancak, vtable'ınız küçükse ve CComPolyObject
gibi toplanmış veya toplanmamış bir nesne için iyileştirilmediğinden kullanarak CComAggObject
CComObject
modül boyutu biraz daha büyük olabilir.
nesnenizin sınıf tanımında DECLARE_POLY_AGGREGATABLE makro belirtilirse, CComPolyObject
nesnenizi oluşturmak için kullanılır. Tam denetim veya Internet Explorer denetimi oluşturmak için ATL Proje Sihirbazı'nı kullanırsanız DECLARE_POLY_AGGREGATABLE otomatik olarak bildirilecektir.
Toplanmışsa, nesnenin CComPolyObject
dış nesnenin IUnknown
öğesinden ayrı olarak kendi IUnknown
nesnesi vardır ve kendi başvuru sayısını korur. CComPolyObject
dış bilinmeyene temsilci seçmek için CComContainedObject kullanır.
Toplama hakkında daha fazla bilgi için ATL COM Nesnelerinin Temelleri makalesine bakın.
Devralma Hiyerarşisi
CComObjectRootBase
IUnknown
CComPolyObject
Gereksinimler
Üst bilgi: atlcom.h
CComPolyObject::AddRef
Nesnedeki başvuru sayısını artırır.
STDMETHOD_(ULONG, AddRef)();
Dönüş Değeri
Tanılama veya test için yararlı olabilecek bir değer.
CComPolyObject::CComPolyObject
Oluşturucu.
CComPolyObject(void* pv);
Parametreler
Pv
[in] Nesne toplanacaksa dışta bilinmeyen bir işaretçi veya nesne toplanmazsa NULL.
Açıklamalar
Veri üyesini CComContainedObject
başlatır, m_contained ve modül kilit sayısını artırır.
Yıkıcı, modül kilit sayısını azalmış.
CComPolyObject::~CComPolyObject
Yok edici.
~CComPolyObject();
Açıklamalar
Ayrılan tüm kaynakları serbest bırakma, FinalRelease çağrısı yapma ve modül kilitleme sayısını azaltma.
CComPolyObject::CreateInstance
CoCreateInstance yükü olmadan yeni bir CComPolyObjectcontained
>< nesnesi oluşturmanıza olanak tanır.
static HRESULT WINAPI CreateInstance(
LPUNKNOWN pUnkOuter,
CComPolyObject<contained>** pp);
Parametreler
Pp
[out] CComPolyObject işaretçisi işaretçisi<contained
>. 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 yükü CoCreateInstance
olmadan yeni bir nesne oluşturmak istiyorsanız, bunun yerine CComCoClass::CreateInstance kullanın.
CComPolyObject::FinalConstruct
Nesne oluşturmanın son aşamaları sırasında çağrılan bu yöntem, m_contained veri üyesi üzerinde herhangi bir son başlatma gerçekleştirir.
HRESULT FinalConstruct();
Dönüş Değeri
Standart bir HRESULT değeri.
CComPolyObject::FinalRelease
Nesne yok etme sırasında çağrılan bu yöntem, m_contained veri üyesini serbest getirir.
void FinalRelease();
CComPolyObject::m_contained
Sınıfınızdan türetilmiş bir CComContainedObject nesnesi.
CComContainedObject<contained> m_contained;
Parametreler
Bulunan
[in] Sınıfınız, CComObjectRoot veya CComObjectRootEx'ten ve nesne üzerinde desteklemek istediğiniz diğer arabirimlerden türetilir.
Açıklamalar
IUnknown
üzerinden m_contained
çağrılar, nesne toplanırsa dış bilinmeyene IUnknown
veya nesne toplanmazsa bu nesnenin adına temsilci olarak gönderilir.
CComPolyObject::QueryInterface
İstenen arabirim için bir işaretçi alır.
STDMETHOD(QueryInterface)(REFIID iid, void** ppvObject);
template <class Q>
HRESULT QueryInterface(Q** pp);
Parametreler
Q
COM arabirimi.
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] tarafından __uuidof(Q)
tanımlanan arabirim işaretçisi.
Dönüş Değeri
Standart bir HRESULT değeri.
Açıklamalar
Toplanan bir nesne için, istenen arabirim ise IUnknown
, QueryInterface
toplanan nesnenin kendi IUnknown
işaretçisini döndürür ve başvuru sayısını artırır. Aksi takdirde, bu yöntem m_contained veri üyesi aracılığıyla CComContainedObject
arabirimi sorgular.
CComPolyObject::Release
Nesnedeki başvuru sayısını azaltma.
STDMETHOD_(ULONG, Release)();
Dönüş Değeri
Hata ayıklama derlemelerinde, Release
tanılama veya test için yararlı olabilecek bir değer döndürür. Plansız derlemelerde Release
her zaman 0 döndürür.
Ayrıca bkz.
CComObjectRootEx Sınıfı
DECLARE_POLY_AGGREGATABLE
Sınıfa Genel Bakış