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 |
---|---|
o construtor. |
|
O destrutor. |
Métodos públicos
Nome |
Descrição |
---|---|
Sai contagem de referência para um objeto de CComTearOffObject . |
|
Retorna um ponteiro para a interface solicitada em sua classe de rasgo - fora ou na classe do proprietário. |
|
Diminui a contagem de referência para um objeto de CComTearOffObject e destrói-a. |
Métodos de CComTearOffObjectBase
Construtor. |
Membros de dados de CComTearOffObjectBase
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