Compartilhar via


Classe de CComTearOffObject

Essa classe implementa uma interface de rasgo - fora.

template<
   class Base 
>
class CComTearOffObject :
   public Base

Parâmetros

  • Base
    Seus classe de rasgo - desligado, derivados de CComTearOffObjectBase e interfaces você desejar que o objeto de rasgo - fora ao suporte.

ATL implementa as interfaces de rasgo - fora de duas fases — os métodos de CComTearOffObjectBase manipulam a contagem e QueryInterfacede referência, quando CComTearOffObject implementar IUnknown.

Membros

wh8b86c9.collapse_all(pt-br,VS.110).gifConstrutores public

Nome

Descrição

CComTearOffObject::CComTearOffObject

o construtor.

CComTearOffObject::~CComTearOffObject

O destrutor.

wh8b86c9.collapse_all(pt-br,VS.110).gifMétodos públicos

Nome

Descrição

CComTearOffObject::AddRef

Sai contagem de referência para um objeto de CComTearOffObject .

CComTearOffObject::QueryInterface

Retorna um ponteiro para a interface solicitada em sua classe de rasgo - fora ou na classe do proprietário.

CComTearOffObject::Release

Diminui a contagem de referência para um objeto de CComTearOffObject e destrói-a.

wh8b86c9.collapse_all(pt-br,VS.110).gifMétodos de CComTearOffObjectBase

CComTearOffObjectBase

Construtor.

wh8b86c9.collapse_all(pt-br,VS.110).gifMembros de dados de CComTearOffObjectBase

m_pOwner

Um ponteiro para CComObject derivado da classe do proprietário.

Comentários

CComTearOffObject implementa uma interface de rasgo - fora como um objeto separado que é instanciado somente quando essa interface é consultada para.O rasgo - fora é excluído quando a contagem de referência se torna zero.Normalmente, você cria uma interface de rasgo - fora de uma interface que é usada com pouca freqüência, como o uso de um rasgo - fora salva um ponteiro vtable em todas as instâncias do seu objeto principal.

Você deve derivar da classe que implementa o rasgo - fora de CComTearOffObjectBase e qualquer interfaces você desejar que o objeto de rasgo - fora ao suporte.CComTearOffObjectBase templatized na classe do proprietário e no modelo de threads.A classe do proprietário é a classe de objeto para um rasgo - fora está sendo implementado.Se você não especificar um modelo de threads, o modelo de segmento é usado.

Você deve criar um mapa COM para sua classe de rasgo - fora.Quando ATL cria uma instância do rasgo - desligado, criará CComTearOffObject<CYourTearOffClass> ou CComCachedTearOffObject<CYourTearOffClass>.

Por exemplo, no exemplo de SINALIZADOR, a classe de CBeeper2 é a classe de rasgo - fora e a classe de CBeeper é a classe do proprietário:

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:

};

Hierarquia de herança

Base

CComTearOffObject

Requisitos

Cabeçalho: atlcom.h

Consulte também

Referência

Classe de CComCachedTearOffObject

Outros recursos

Visão geral da classe de ATL