CComTearOffObject

templatelt, classe Base >
classe CComTearOffObject : público Base

Parâmetros

Base

Sua classe destacáveis, derivado CComTearOffObjectBase e as interfaces que você deseja que seu objeto destacáveis para apoiar.

ATL implementa suas interfaces destacável em duas fases — os métodos de CComTearOffObjectBase manipular o contagem de referência e o Falha de QueryInterface, enquanto CComTearOffObject implementa IUnknown.

CComTearOffObject implementa uma interface destacáveis como um objeto separado é instanciado somente quando essa interface é consultada para. O destacável é excluído quando seu contagem de referência torna-se zero. Normalmente, você cria uma interface destacáveis para uma interface que é usada raramente, desde que usar um tear-off salva um ponteiro vtable em todas as instâncias do seu objeto principal.

Você deve derivar a classe implementando o destacável de CComTearOffObjectBase e de qualquer que seja o interfaces você quer seu objeto destacável para suporte. CComTearOffObjectBase é templatized na classe proprietário e o modelo de thread. O proprietário classe é a classe do objeto para o qual um destacável está sendo implementado. Se você não especificar um modelo de segmento, o modelo de thread de padrão é usado.

Você deve criar um mapa COM para sua classe destacáveis. Quando ATL instancia o destacáveis, que irá criar CComTearOffObjectlt;CYourTearOffClass > ou CComCachedTearOffObject <CYourTearOffClass>.

Por exemplo, no exemplo BEEPER, o CBeeper2 classe é a classe destacáveis e o CBeeper classe é a classe de proprietário:

classe CBeeper2: ISupportErrorInfo público,
 nbsp;               público CComTearOffObjectBase <CBeeper>
{
público:
   {CBeeper2()}
   STDMETHOD(InterfaceSupportsErrorInfo) (REFIID riid)
   {
      retorno (InlineIsEqualGUID(IID_IBeeper,riid))? 
              S_OK: S_FALSE;
   }

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

Classe CBeeper:
   IDispatchImpl pública < IBeeper, & IID_IBeeper & LIBID_BeeperLib >
   CComObjectRoot público,
   CComCoClass públicas < CBeeper & CLSID_Beeper >
{
público:
   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>

Membros de classe

Co&nsulte tambémnbsp;CComCachedTearOffObject

Index