Aracılığıyla paylaş


CComTearOffObject Sınıfı

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.

Ayrıca bkz.

CComCachedTearOffObject Sınıfı
Sınıfa Genel Bakış