Compartir a través de


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:

IDispEventImply 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