Condividi tramite


CComTearOffObject Class

Questa classe implementa un un'interfaccia tear-off.

template< 
   class Base  
> 
class CComTearOffObject : 
   public Base

Parametri

  • Base
    Il sradichi la classe, derivata da CComTearOffObjectBase e le interfacce che si desidera che il sradicano l'oggetto di supporto.

ATL implementa i relativi un'interfaccia tear-off in due fasi — i metodi CComTearOffObjectBase gestiscono il conteggio dei riferimenti e QueryInterface, mentre CComTearOffObject implementa IUnknown.

Membri

Costruttori pubblici

Nome

Descrizione

CComTearOffObject::CComTearOffObject

Costruttore.

CComTearOffObject::~CComTearOffObject

Il distruttore.

Metodi pubblici

Nome

Descrizione

CComTearOffObject::AddRef

Incrementa il conteggio dei riferimenti per un oggetto CComTearOffObject.

CComTearOffObject::QueryInterface

Restituisce un puntatore a un'interfaccia richiesta su uno il sradicano la classe o la classe proprietario.

CComTearOffObject::Release

Decrementa il conteggio dei riferimenti per un oggetto CComTearOffObject e lo stato eliminato.

Metodi di CComTearOffObjectBase

CComTearOffObjectBase

Costruttore.

Membri dati di CComTearOffObjectBase

m_pOwner

Un puntatore a CComObject derivato dalla classe proprietario.

Note

UnCComTearOffObject implementa un'interfaccia tear-off come oggetto separato che viene creata un'istanza solo quando tale interfaccia viene eseguita una query per. Lo sradicamento eliminato quando il conteggio dei riferimenti diventa zero. In genere, gli sviluppatori di un'interfaccia tear-off per un'interfaccia utilizzata raramente, poiché tramite uno sradicamento salva un puntatore vtable in tutte le istanze del principale.

È necessario derivare la classe che implementi lo sradicamento da CComTearOffObjectBase e dalle interfacce che il sradichi l'oggetto di supporto. CComTearOffObjectBase templatized la classe proprietario e il modello di threading. La classe proprietario è la classe dell'oggetto di cui uno sradicamento sta implementando. Se non si specifica un modello di threading, il modello di threading predefinito.

È necessario creare un COM si esegue il mapping del sradicate la classe. Quando ATL creare un'istanza dello sradicamento, viene creata CComTearOffObject<CYourTearOffClass> o CComCachedTearOffObject<CYourTearOffClass>.

Ad esempio, nell'esempio BEEPER, la classe CBeeper2 è la classe di sradicamento e la classe CBeeper è la classe proprietario:

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:

};

Gerarchia di ereditarietà

Base

CComTearOffObject

Requisiti

Header: atlcom.h

Vedere anche

Riferimenti

CComCachedTearOffObject Class

Altre risorse

ATL Class Overview