Clase IDispEventSimpleImpl
Esta clase proporciona implementaciones de los métodos IDispatch
, sin obtener información de tipo de una biblioteca de tipos.
Importante
Esta clase y sus miembros no se pueden usar en las aplicaciones que se ejecutan en Windows Runtime.
Sintaxis
template <UINT nID, class T, const IID* pdiid>
class ATL_NO_VTABLE IDispEventSimpleImpl : public _IDispEventLocator<nID, pdiid>
Parámetros
Nid
Un identificador único para el objeto de origen. Cuando IDispEventSimpleImpl
es la clase base de un control compuesto, use el id. de recurso del control contenido que quiera para este parámetro. En otros casos, use un número entero positivo arbitrario.
T
La clase del usuario, que se deriva de IDispEventSimpleImpl
.
pdiid
El puntero al IID del evento dispinterface implementado por esta clase.
Miembros
Métodos públicos
Nombre | Descripción |
---|---|
IDispEventSimpleImpl::Advise | Establece una conexión con el origen del eventos predeterminado. |
IDispEventSimpleImpl::DispEventAdvise | Establece una conexión con el origen del evento. |
IDispEventSimpleImpl::DispEventUnadvise | Interrumpe la conexión con el origen del evento. |
IDispEventSimpleImpl::GetIDsOfNames | Devuelve E_NOTIMPL. |
IDispEventSimpleImpl::GetTypeInfo | Devuelve E_NOTIMPL. |
IDispEventSimpleImpl::GetTypeInfoCount | Devuelve E_NOTIMPL. |
IDispEventSimpleImpl::Invoke | Llama a los controladores de eventos enumerados en el mapa de receptor de eventos. |
IDispEventSimpleImpl::Unadvise | Interrumpe la conexión con el origen del evento predeterminado. |
Comentarios
IDispEventSimpleImpl
proporciona una manera de implementar un evento dispinterface sin necesidad de proporcionar un código de implementación para cada método o evento en esa interfaz. IDispEventSimpleImpl
proporciona implementaciones de los métodos IDispatch
. Solo tiene que proporcionar implementaciones para los eventos que le interesa controlar.
IDispEventSimpleImpl
funciona junto con el mapa de receptor de eventos en la clase para enrutar los eventos a la función de controlador adecuada. Para usar esta clase:
Agregue una macro SINK_ENTRY_INFO al mapa de receptor del evento para cada evento de cada objeto que quiera controlar.
Proporcione información de tipo para cada evento al pasar un puntero a una estructura _ATL_FUNC_INFO como parámetro a cada entrada. En la plataforma x86, el valor
_ATL_FUNC_INFO.cc
debe ser CC_CDECL con el método de llamada a la función de devolución de llamada de __stdcall.Llame a DispEventAdvise para establecer la conexión entre el objeto de origen y la clase base.
Llame a DispEventUnadvise para interrumpir la conexión.
Debe derivar de IDispEventSimpleImpl
(mediante un valor único para nID) para cada objeto del que necesite controlar los eventos. Puede volver a usar la clase base si quita un objeto de origen y, a continuación, avisa a otro objeto de origen diferente. Sin embargo, el número máximo de objetos de origen que puede controlar un solo objeto a la vez está limitado por el número de clases base IDispEventSimpleImpl
.
IDispEventSimplImpl
proporciona la misma funcionalidad que IDispEventImpl, excepto que no obtiene información de tipo sobre la interfaz de una biblioteca de tipos. Los asistentes generan código basado solo en IDispEventImpl
, pero puede usar IDispEventSimpleImpl
si agrega el código manualmente. Use IDispEventSimpleImpl
cuando no tenga una biblioteca de tipos que describa la interfaz de eventos o quiera evitar la sobrecarga derivada del uso de la biblioteca de tipos.
Nota:
IDispEventImpl
y IDispEventSimpleImpl
proporcionan su propia implementación de IUnknown::QueryInterface
que permite que cada clase IDispEventImpl
o IDispEventSimpleImpl
clase base actúe como una identidad COM independiente, a la vez que permite el acceso directo a los miembros de clase en el objeto COM principal.
La implementación ATL de CE de receptores de eventos ActiveX solo admite valores devueltos de tipo HRESULT o void de los métodos del controlador de eventos; no se admite ningún otro valor devuelto y su comportamiento no está definido.
Para más información, vea Compatibilidad con IDispEventImpl.
Jerarquía de herencia
_IDispEvent
_IDispEventLocator
IDispEventSimpleImpl
Requisitos
Encabezado: atlcom.h
IDispEventSimpleImpl::Advise
Llame a este método para establecer una conexión con el origen del evento representado por pUnk.
HRESULT Advise(IUnknown* pUnk);
Parámetros
pUnk
[in] Puntero a la interfaz IUnknown
del objeto de origen del evento.
Valor devuelto
S_OK o cualquier otro valor HRESULT de error.
Comentarios
Una vez establecida la conexión, los eventos desencadenados desde pUnk se enrutarán a los controladores de la clase mediante el mapa de receptor de eventos.
Nota:
Si la clase se deriva de varias clases IDispEventSimpleImpl
, deberá eliminar la ambigüedad de las llamadas a este método estableciendo el ámbito de la llamada con la clase base concreta que le interesa.
Advise
establece una conexión y obtiene el IID con el origen del evento predeterminado del objeto, tal y como viene determinado porAtlGetObjectSourceInterface.
IDispEventSimpleImpl::DispEventAdvise
Llame a este método para establecer una conexión con el origen del evento representado por pUnk.
HRESULT DispEventAdvise(IUnknown* pUnk const IID* piid);
Parámetros
pUnk
[in] Puntero a la interfaz IUnknown
del objeto de origen del evento.
piid
Puntero al IID del objeto de origen del evento.
Valor devuelto
S_OK o cualquier otro valor HRESULT de error.
Comentarios
Posteriormente, los eventos desencadenados desde pUnk se enrutarán a los controladores de la clase mediante el mapa de receptor de eventos.
Nota:
Si la clase se deriva de varias clases IDispEventSimpleImpl
, deberá eliminar la ambigüedad de las llamadas a este método estableciendo el ámbito de la llamada con la clase base concreta que le interesa.
DispEventAdvise
establece una conexión con el origen del evento especificado en pdiid
.
IDispEventSimpleImpl::DispEventUnadvise
Interrumpe la conexión con el origen del evento representado por pUnk.
HRESULT DispEventUnadvise(IUnknown* pUnk const IID* piid);
Parámetros
pUnk
[in] Puntero a la interfaz IUnknown
del objeto de origen del evento.
piid
Puntero al IID del objeto de origen del evento.
Valor devuelto
S_OK o cualquier otro valor HRESULT de error.
Comentarios
Una vez interrumpida la conexión, los eventos ya no se enrutarán a las funciones de controlador enumeradas en el mapa de receptor de eventos.
Nota:
Si la clase se deriva de varias clases IDispEventSimpleImpl
, deberá eliminar la ambigüedad de las llamadas a este método estableciendo el ámbito de la llamada con la clase base concreta que le interesa.
DispEventAdvise
interrumpe una conexión establecida con el origen del evento especificado en pdiid
.
IDispEventSimpleImpl::GetIDsOfNames
Esta implementación de IDispatch::GetIDsOfNames
devuelve E_NOTIMPL.
STDMETHOD(GetIDsOfNames)(
REFIID /* riid */,
LPOLESTR* /* rgszNames */,
UINT /* cNames */,
LCID /* lcid */,
DISPID* /* rgdispid */);
Comentarios
Consulte IDispatch::GetIDsOfNames en Windows SDK.
IDispEventSimpleImpl::GetTypeInfo
Esta implementación de IDispatch::GetTypeInfo
devuelve E_NOTIMPL.
STDMETHOD(GetTypeInfo)(
UINT /* itinfo */,
LCID /* lcid */,
ITypeInfo** /* pptinfo */);
Comentarios
Consulte IDispatch::GetTypeInfo en Windows SDK.
IDispEventSimpleImpl::GetTypeInfoCount
Esta implementación de IDispatch::GetTypeInfoCount
devuelve E_NOTIMPL.
STDMETHOD(GetTypeInfoCount)(UINT* /* pctinfo */);
Comentarios
Consulte IDispatch::GetTypeInfoCount en Windows SDK.
IDispEventSimpleImpl::Invoke
Esta implementación de IDispatch::Invoke
llama a los controladores de eventos enumerados en el mapa de receptor de eventos.
STDMETHOD(Invoke)(
DISPID dispidMember,
REFIID /* riid */,
LCID lcid,
WORD /* wFlags */,
DISPPARMS* pdispparams,
VARIANT* pvarResult,
EXCEPINFO* /* pexcepinfo */,
UINT* /* puArgErr */);
Comentarios
Consulte IDispatch::Invoke.
IDispEventSimpleImpl::Unadvise
Interrumpe la conexión con el origen del evento representado por pUnk.
HRESULT Unadvise(IUnknown* pUnk);
Parámetros
pUnk
[in] Puntero a la interfaz IUnknown
del objeto de origen del evento.
Valor devuelto
S_OK o cualquier otro valor HRESULT de error.
Comentarios
Una vez interrumpida la conexión, los eventos ya no se enrutarán a las funciones de controlador enumeradas en el mapa de receptor de eventos.
Nota:
Si la clase se deriva de varias clases IDispEventSimpleImpl
, deberá eliminar la ambigüedad de las llamadas a este método estableciendo el ámbito de la llamada con la clase base concreta que le interesa.
Unadvise
interrumpe una conexión que se ha establecido con el origen del evento predeterminado especificado en pdiid
.
Unavise
interrumpe una conexión con el origen del evento predeterminado, obtiene el IID del origen del evento predeterminado del objeto tal y como se determina en AtlGetObjectSourceInterface.
Consulte también
_ATL_FUNC_INFO (estructura)
IDispatchImpl (clase)
IDispEventImpl (clase)
SINK_ENTRY_INFO
Información general sobre la clase