Partilhar 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

Construtores public

Nome

Descrição

CComTearOffObject::CComTearOffObject

o construtor.

CComTearOffObject::~CComTearOffObject

O destrutor.

Mé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.

Métodos de CComTearOffObjectBase

CComTearOffObjectBase

Construtor.

Membros 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