Condividi tramite


Classe di CComTearOffObject

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

wh8b86c9.collapse_all(it-it,VS.110).gifCostruttori pubblici

Nome

Descrizione

CComTearOffObject::CComTearOffObject

Costruttore.

CComTearOffObject::~CComTearOffObject

Il distruttore.

wh8b86c9.collapse_all(it-it,VS.110).gifMetodi 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.

wh8b86c9.collapse_all(it-it,VS.110).gifMetodi di CComTearOffObjectBase

CComTearOffObjectBase

Costruttore.

wh8b86c9.collapse_all(it-it,VS.110).gifMembri 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

Classe di CComCachedTearOffObject

Altre risorse

I cenni preliminari sulle classi ATL