Freigeben über


CComTearOffObject Class

Diese Klasse implementiert eine Tearoff-Schnittstelle.

template< 
   class Base  
> 
class CComTearOffObject : 
   public Base

Parameter

  • Base
    Tearoffe die Klasse, abgeleitet von CComTearOffObjectBase und Schnittstellen möchten Sie das Tearoffes Objekt zur Unterstützung.

ATL implementiert ihre Tearoff-Schnittstellen in zwei Phasen - die CComTearOffObjectBase-Methoden behandeln den Verweiszähler und QueryInterface, während CComTearOffObjectIUnknown implementiert.

Mitglieder

Öffentliche Konstruktoren

Name

Description

CComTearOffObject::CComTearOffObject

Der -Konstruktor.

CComTearOffObject::~CComTearOffObject

Der Destruktor.

Öffentliche Methoden

Name

Description

CComTearOffObject::AddRef

Inkrementiert den Verweiszähler für ein CComTearOffObject-Objekt.

CComTearOffObject::QueryInterface

Gibt einen Zeiger auf die angeforderte Schnittstelle auf jedem Tearoffe die Klasse oder die Besitzerklasse zurück.

CComTearOffObject::Release

Dekrementiert den Verweiszähler für ein CComTearOffObject-Objekt zerstört und ihn.

CComTearOffObjectBase-Methoden

CComTearOffObjectBase

Konstruktor.

CComTearOffObjectBase-Datenmember

m_pOwner

Ein Zeiger auf CComObject berechnete aus der Besitzerklasse.

Hinweise

CComTearOffObject implementiert eine Tearoff-Schnittstelle als separates Objekt, das instanziiert wird, wenn diese Schnittstelle für abgefragt wird. Das Tearoff wird gelöscht, wenn sein Zähler auf Null ist. Normalerweise erstellen Sie eine Tearoff-Schnittstelle für eine Schnittstelle, die selten verwendet wird, da ein, Tearoff verwenden, einen Zeiger in allen Instanzen des Hauptzwecks speichert.

Sie sollten die Klasse ableiten, die das Tearoff von CComTearOffObjectBase implementiert und von, welche Schnittstellen Sie das Tearoffes Objekt zur Unterstützung soll. CComTearOffObjectBase ist auf der Besitzerklasse und dem Threadmodell vorlagenbasierten. Die Besitzerklasse ist die Klasse des Objekts, für das ein Tearoff implementiert wird. Wenn Sie kein Threadmodell angeben, wird das standardmäßige Threadmodell verwendet.

Sie sollten eine COM-Zuordnung für die Tearoffe Klasse erstellen. Wenn das ATL Tearoff instanziiert, erstellt er CComTearOffObject<CYourTearOffClass> oder CComCachedTearOffObject<CYourTearOffClass>.

Beispielsweise im - Beispiel, ist die CBeeper2-Klasse die Tearoffe Klasse und die CBeeper-Klasse ist die Besitzerklasse:

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:

};

Vererbungshierarchie

Base

CComTearOffObject

Anforderungen

Header: möchten

Siehe auch

Referenz

CComCachedTearOffObject Class

Weitere Ressourcen

ATL Class Overview