Clase de CComTearOffObject
Esta clase implementa una interfaz de rasgón.
template<
class Base
>
class CComTearOffObject :
public Base
Parámetros
- Base
La clase de rasgón, derivadas de CComTearOffObjectBase e interfaces desea que el objeto de rasgón admitir.
ATL implementa el rasga interfaces en dos fases — los métodos de CComTearOffObjectBase administran el recuento y QueryInterfacede referencia, mientras que CComTearOffObject implementa IUnknown.
Members
Constructores públicos
Name |
Descripción |
---|---|
el constructor. |
|
El destructor. |
Métodos públicos
Name |
Descripción |
---|---|
Incrementa el recuento de referencias de un objeto de CComTearOffObject . |
|
Devuelve un puntero a la interfaz solicitada en la clase de rasgón o la clase propietaria. |
|
Decrementa para un objeto de CComTearOffObject y destruir. |
métodos de CComTearOffObjectBase
Constructor. |
miembros de datos de CComTearOffObjectBase
Un puntero a CComObject derivado de la clase propietaria. |
Comentarios
CComTearOffObject implementa una interfaz de rasgón como objeto independiente se cree instancias que cuando esa interfaz se consulta para.Se elimina el rasgón cuando su recuento de referencia se convierte en cero.Normalmente, se compila una interfaz de rasgón para una interfaz que se utilice raramente, ya que utilizar un rasgón guardar un puntero vtable en todas las instancias del objeto principal.
Debe derivar la clase que implementa el rasgón de CComTearOffObjectBase y de las interfaces desea que el objeto de rasgón admitir.CComTearOffObjectBase templatized en la clase propietaria y el modelo de subprocesos.La clase propietario es la clase del objeto para el que se implementa un rasgón.Si no especifica un modelo de subprocesos, se utiliza el modelo predeterminado de subproceso.
Debe crear un mapa COM para la clase de rasgón.Cuando ATL crea instancias del rasgón, creará CComTearOffObject <CTheTearOffClass> o CComCachedTearOffObject <CTheTearOffClass> .
Por ejemplo, en el ejemplo BEEPER, la clase de CBeeper2 es la clase de rasgón y la clase de CBeeper es la clase propietaria:
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:
};
Jerarquía de herencia
Base
CComTearOffObject
Requisitos
encabezado: atlcom.h
Vea también
Referencia
Clase de CComCachedTearOffObject