CComTearOffObject

Templatelt; -Klasse Base >
Klasse CComTearOffObject : öffentliche Base

Parameter

Base

Ihre ABREISS-Klasse, die von CComTearOffObjectBase und Sie Ihre ABREISS-Objekt unterstützen möchten Schnittstellen.

ATL implementiert die Schnittstellen ABREISS in zwei Phasen — die CComTearOffObjectBase Methoden behandeln den Verweiszähler und QueryInterface, während CComTearOffObject implementiert IUnknown.

CComTearOffObject implementiert eine Schnittstelle ABREISS als separates Objekt, das instanziiert wird, nur, wenn diese Schnittstelle abgefragt werden. Tear-off wird gelöscht, wenn der Verweiszähler 0 (null) wird. In der Regel erstellen Sie eine ABREISS-Schnittstelle für eine Schnittstelle, die selten verwendet wird, da mit Tear-off einen Vtable-Zeiger in alle Instanzen des Haupt-Objekts speichert,.

Leiten Sie die Klasse zur Implementierung der ABREISS aus CComTearOffObjectBase und welche Schnittstellen das ABREISS-Objekt unterstützen soll. CComTearOffObjectBase ist auf der Besitzerklasse und die Threadmodell auf Vorlagen beruhen. Die Besitzer-Klasse ist die Klasse des Objekts, für die ein ABREISS umgesetzt wird. Wenn Sie eine Threadmodell nicht angeben, wird das Standard-Thread-Modell verwendet.

Erstellen Sie eine COM-Zuordnung für Ihre ABREISS-Klasse. Wenn ATL den ABREISS instanziiert, erstellt er CComTearOffObjectlt;CYourTearOffClass > oder CComCachedTearOffObject <CYourTearOffClass>.

In das Beispiel für BEEPER, beispielsweise die CBeeper2 -Klasse ist die Klasse ABREISS und die CBeeper Besitzer Klasse:

klasse CBeeper2: öffentliche ISupportErrorInfo,
 Nbsp;               öffentliche CComTearOffObjectBase <CBeeper>
{
Öffentliche:
   {CBeeper2()}
   STDMETHOD(InterfaceSupportsErrorInfo) (REFIID Riid)
   {
      Rückkehr (InlineIsEqualGUID(IID_IBeeper,riid))? 
              S_OK: S_FALSE;
   }

BEGIN_COM_MAP(CBeeper2)
      COM_INTERFACE_ENTRY(ISupportErrorInfo)
   END_COM_MAP()
};

Klasse CBeeper:
   öffentliche IDispatchImpl < IBeeper, IID_IBeeper & LIBID_BeeperLib >,
   öffentliche CComObjectRoot,
   öffentliche CComCoClass < CBeeper & CLSID_Beeper >
{
Öffentliche:
   CBeeper();
   BEGIN_COM_MAP(CBeeper)
      COM_INTERFACE_ENTRY(IDispatch)
      COM_INTERFACE_ENTRY(IBeeper)
      COM_INTERFACE_ENTRY_TEAR_OFF (IID_ISupportErrorInfo, CBeeper2)
   END_COM_MAP()
...
}

# include lt;atlcom.h>

Klassenmember

Siehe auch&Nbsp;CComCachedTearOffObject

Index