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.
Bu sınıf bir koparma arabirimi uygular.
Sözdizimi
template<class Base>
class CComTearOffObject : public Base
Parametreler
Taban
Ve'den CComTearOffObjectBase türetilen ve koparma nesnenizin desteklemesini istediğiniz arabirimler olan koparma sınıfınız.
ATL, ayrıştırma arabirimlerini iki aşamada uygular: CComTearOffObjectBase yöntemler başvuru sayısını ve QueryInterfaceöğesini işlerken CComTearOffObject IUnknown'ı uygular.
Üyeler
Ortak Oluşturucular
| Veri Akışı Adı | Açıklama |
|---|---|
| CComTearOffObject::CComTearOffObject | Oluşturucu. |
| CComTearOffObject::~CComTearOffObject | Yok edici. |
Genel Yöntemler
| Veri Akışı Adı | Açıklama |
|---|---|
| CComTearOffObject::AddRef | Bir CComTearOffObject nesne için başvuru sayısını artırır. |
| CComTearOffObject::QueryInterface | Tear-off sınıfınızda veya sahip sınıfınızda istenen arabirime yönelik bir işaretçi döndürür. |
| CComTearOffObject::Release | Bir CComTearOffObject nesne için başvuru sayısını azalan ve yok eder. |
CComTearOffObjectBase Yöntemleri
| İşlev | Açıklama |
|---|---|
| CComTearOffObjectBase | Oluşturucu. |
CComTearOffObjectBase Veri Üyeleri
| Veri üyesi | Açıklama |
|---|---|
| m_pOwner | Sahip sınıfından türetilmiş bir CComObject işaretçi. |
Açıklamalar
CComTearOffObject yalnızca bu arabirim sorgulandığında örneği açılan ayrı bir nesne olarak ayrı bir arabirim uygular. Başvuru sayısı sıfır olduğunda, yırtılma silinir. Genellikle, bir koparma kullanmak ana nesnenizin tüm örneklerinde bir vtable işaretçisini kaydettiğinden, nadiren kullanılan bir arabirim için bir yırtılma arabirimi oluşturursunuz.
Koparma nesnenizin desteklemesini istediğiniz arabirimlerden CComTearOffObjectBase ve arabirimlerden koparma uygulayan sınıfı türetmelisiniz. CComTearOffObjectBase sahip sınıfında ve iş parçacığı modelinde şablon haline getirilir. Sahip sınıfı, bir koparma uygulanmakta olan nesnenin sınıfıdır. İş parçacığı modeli belirtmezseniz, varsayılan iş parçacığı modeli kullanılır.
Yırtılma sınıfınız için bir COM haritası oluşturmanız gerekir. ATL, yırtılma örneğini oluşturduğunda veya CComCachedTearOffObject<CYourTearOffClass>oluştururCComTearOffObject<CYourTearOffClass>.
Örneğin, BEEPER örneğinde CBeeper2 sınıfı tear-off sınıfı, CBeeper sınıfı ise sahip sınıfıdır:
class CBeeper2 :
public ISupportErrorInfo,
public CComTearOffObjectBase<CBeeper>
{
public:
CBeeper2() {}
STDMETHOD(InterfaceSupportsErrorInfo)(REFIID riid)
{
return (InlineIsEqualGUID(IID_IBeeper, riid)) ? S_OK : S_FALSE;
}
BEGIN_COM_MAP(CBeeper2)
COM_INTERFACE_ENTRY(ISupportErrorInfo)
END_COM_MAP()
};
class ATL_NO_VTABLE CBeeper :
public CComObjectRootEx<CComSingleThreadModel>,
public CComCoClass<CBeeper, &CLSID_Beeper>,
public IDispatchImpl<IBeeper, &IID_IBeeper, &LIBID_NVC_ATL_COMLib, /*wMajor =*/ 1, /*wMinor =*/ 0>
{
public:
CBeeper()
{
}
DECLARE_REGISTRY_RESOURCEID(IDR_BEEPER)
DECLARE_NOT_AGGREGATABLE(CBeeper)
BEGIN_COM_MAP(CBeeper)
COM_INTERFACE_ENTRY(IBeeper)
COM_INTERFACE_ENTRY(IDispatch)
COM_INTERFACE_ENTRY_TEAR_OFF(IID_ISupportErrorInfo, CBeeper2)
END_COM_MAP()
// ISupportsErrorInfo
STDMETHOD(InterfaceSupportsErrorInfo)(REFIID riid);
DECLARE_PROTECT_FINAL_CONSTRUCT()
HRESULT FinalConstruct()
{
return S_OK;
}
void FinalRelease()
{
}
public:
};
Devralma Hiyerarşisi
Base
CComTearOffObject
Gereksinimler
Üst bilgi: atlcom.h
CComTearOffObject::AddRef
Nesnenin başvuru sayısını CComTearOffObject bir artırır.
STDMETHOD_(ULONG, AddRef)();
Dönüş Değeri
Tanılama ve test için yararlı olabilecek bir değer.
CComTearOffObject::CComTearOffObject
Oluşturucu.
CComTearOffObject(void* pv);
Parametreler
Pv
[in] Nesne işaretçisine dönüştürülecek işaretçi CComObject<Owner> .
Açıklamalar
Sahibin başvuru sayısını bir artırır.
CComTearOffObject::~CComTearOffObject
Yok edici.
~CComTearOffObject();
Açıklamalar
Ayrılan tüm kaynakları serbest bırakma, FinalRelease çağrısı yapma ve modül kilitleme sayısını azaltma.
CComTearOffObject::CComTearOffObjectBase
Oluşturucu.
CComTearOffObjectBase();
Açıklamalar
m_pOwner üyesini NULL olarak başlatır.
CComTearOffObject::m_pOwner
Sahip'ten türetilen bir CComObject nesnesinin işaretçisi.
CComObject<Owner>* m_pOwner;
Parametreler
Sahip
[in] Bir koparma uygulanmakta olan sınıfı.
Açıklamalar
İşaretçi, oluşturma sırasında NULL olarak başlatılır.
CComTearOffObject::QueryInterface
İstenen arabirim için bir işaretçi alır.
STDMETHOD(QueryInterface)(REFIID iid, void** ppvObject);
Parametreler
iid
[in] İstenen arabirimin IID değeri.
ppvObject
[out] iid tarafından tanımlanan arabirim işaretçisi işaretçisi veya arabirim bulunamazsa NULL.
Dönüş Değeri
Standart bir HRESULT değeri.
Açıklamalar
Önce koparma sınıfınızdaki arabirimler için sorgular. Arabirim orada değilse, sahip nesnesinde arabirim için sorgular. İstenen arabirim ise IUnknown, sahibin değerini döndürür IUnknown .
CComTearOffObject::Release
Başvuru sayısını bire kadar geri alır ve başvuru sayısı sıfırsa öğesini siler CComTearOffObject.
STDMETHOD_ULONG Release();
Dönüş Değeri
Hata ayıklama olmayan derlemelerde her zaman sıfır döndürür. Hata ayıklama derlemelerinde, tanılama veya test için yararlı olabilecek bir değer döndürür.