Mapas de receptor de eventos

Cuando un control OLE insertado desencadena un evento, el contenedor del control recibe el evento mediante un mecanismo conocido como "mapa de receptor de eventos", proporcionado por MFC. Este mapa de receptor de eventos designa funciones de controlador para cada evento específico, así como parámetros de esos eventos. Para obtener más información sobre los mapas de receptor de eventos, vea el artículo Contenedores de controles ActiveX.

Mapas de receptor de eventos

Nombre Descripción
BEGIN_EVENTSINK_MAP Inicia la definición de un mapa de receptor de eventos.
DECLARE_EVENTSINK_MAP Declara un mapa de receptor de eventos.
END_EVENTSINK_MAP Finaliza la definición de un mapa de receptor de eventos.
ON_EVENT Define un controlador de eventos para un evento específico.
ON_EVENT_RANGE Define un controlador de eventos para un evento específico desencadenado a partir de un conjunto de controles OLE.
ON_EVENT_REFLECT Recibe eventos desencadenados por el control antes de que los controle el contenedor del control.
ON_PROPNOTIFY Define un controlador para controlar las notificaciones de propiedades desde un control OLE.
ON_PROPNOTIFY_RANGE Define un controlador para controlar notificaciones de propiedades desde un conjunto de controles OLE.
ON_PROPNOTIFY_REFLECT Recibe notificaciones de propiedades enviadas por el control antes de que las controle el contenedor del control.

BEGIN_EVENTSINK_MAP

Comienza la definición del mapa de receptor de eventos.

BEGIN_EVENTSINK_MAP(theClass, baseClass)

Parámetros

theClass
Especifica el nombre de la clase de control de cuyo mapa de receptor de eventos se trata.

baseClass
Especifica el nombre de clase base de theClass.

Comentarios

En el archivo de implementación (.cpp) que define las funciones miembro de la clase, inicie el mapa de receptor de eventos con la macro BEGIN_EVENTSINK_MAP, agregue entradas de macro para cada uno de los eventos que se vaya a notificar y complete el mapa de receptor de eventos con la macro END_EVENTSINK_MAP.

Para obtener más información sobre los mapas de receptor de eventos y los contenedores de controles OLE, vea el artículo Contenedores de controles ActiveX.

Requisitos

Encabezado afxdisp.h

DECLARE_EVENTSINK_MAP

Un contenedor OLE puede proporcionar un mapa de receptor de eventos para especificar los eventos que se van a notificar al contenedor.

DECLARE_EVENTSINK_MAP()

Comentarios

Use la macro DECLARE_EVENTSINK_MAP al final de la declaración de clase. Luego, en el archivo .CPP que define las funciones miembro de la clase, use la macro BEGIN_EVENTSINK_MAP, las entradas de macro para cada uno de los eventos que se van a notificar y la macro END_EVENTSINK_MAP para declarar el final de la lista de receptor de eventos.

Para obtener más información sobre los mapas de receptor de eventos, vea el artículo Contenedores de controles ActiveX.

Requisitos

Encabezado afxwin.h

END_EVENTSINK_MAP

Termina la definición del mapa de receptor de eventos.

END_EVENTSINK_MAP()

Requisitos

Encabezado afxdisp.h

ON_EVENT

Use la macro ON_EVENT para definir una función de controlador de eventos para un evento desencadenado por un control OLE.

ON_EVENT(theClass, id, dispid, pfnHandler,  vtsParams)

Parámetros

theClass
Clase a la que pertenece este mapa de receptor de eventos.

id
Identificador de control del control OLE.

dispid
Identificador de envío del evento desencadenado por el control.

pfnHandler
Puntero a una función miembro que controla el evento. Esta función debe tener un tipo de valor devuelto BOOL y tipos de parámetros que coincidan con los parámetros del evento (vea vtsParams). La función debe devolver TRUE para indicar que se ha controlado el evento; en caso contrario, FALSE.

vtsParams
Secuencia de constantes VTS_ que especifica los tipos de los parámetros del evento. Son las mismas constantes que se usan en entradas de mapa de envío, como DISP_FUNCTION.

Comentarios

El argumento vtsParams es una lista separada por espacios de valores de las constantes VTS_. Uno o varios de estos valores, separados por espacios (no por comas), especifican la lista de parámetros de la función. Por ejemplo:

VTS_I2 VTS_BOOL

especifica una lista que contiene un entero corto seguido de un valor BOOL.

Para obtener una lista de las constantes VTS_, vea EVENT_CUSTOM.

Requisitos

Encabezado afxdisp.h

ON_EVENT_RANGE

Use la macro ON_EVENT_RANGE para definir una función de controlador de eventos para un evento desencadenado por cualquier control OLE que tenga un identificador de control dentro de un rango contiguo de identificadores.

ON_EVENT_RANGE(theClass, idFirst, idLast, dispid, pfnHandler,  vtsParams)

Parámetros

theClass
Clase a la que pertenece este mapa de receptor de eventos.

idFirst
Identificador de control del primer control OLE del rango.

idLast
Identificador de control del último control OLE del rango.

dispid
Identificador de envío del evento desencadenado por el control.

pfnHandler
Puntero a una función miembro que controla el evento. Esta función debe tener un tipo de valor devuelto BOOL, un primer parámetro de tipo UINT (para el identificador de control) y tipos de parámetros adicionales que coincidan con los parámetros del evento (vea vtsParams). La función debe devolver TRUE para indicar que se ha controlado el evento; en caso contrario, FALSE.

vtsParams
Secuencia de constantes VTS_ que especifica los tipos de los parámetros del evento. La primera constante debe ser de tipo VTS_I4, para el identificador de control. Son las mismas constantes que se usan en entradas de mapa de envío, como DISP_FUNCTION.

Comentarios

El argumento vtsParams es una lista separada por espacios de valores de las constantes VTS_. Uno o varios de estos valores, separados por espacios (no por comas), especifican la lista de parámetros de la función. Por ejemplo:

VTS_I2 VTS_BOOL

especifica una lista que contiene un entero corto seguido de un valor BOOL.

Para obtener una lista de las constantes VTS_, vea EVENT_CUSTOM.

Ejemplo

En el ejemplo siguiente se muestra un controlador de eventos, para el evento MouseDown, implementado en tres controles (IDC_MYCTRL1 por medio de IDC_MYCTRL3). La función de controlador de eventos, OnRangeMouseDown, se declara en el archivo de encabezado de la clase de cuadro de diálogo (CMyDlg) como:

BOOL OnRangeMouseDown(UINT CtlID, short MouseButton, short Shift,
   long x, long y);

El código siguiente se define en el archivo de implementación de la clase de cuadro de diálogo.

BEGIN_EVENTSINK_MAP(CMyDlg, CDialog)
   ON_EVENT_RANGE(CMyDlg, IDC_MYCTRL1, IDC_MYCTRL3, -605, OnRangeMouseDown,
      VTS_I4 VTS_I2 VTS_I2 VTS_I4 VTS_I4)
END_EVENTSINK_MAP()

Requisitos

Encabezado afxdisp.h

ON_EVENT_REFLECT

La macro ON_EVENT_REFLECT, cuando se usa en el mapa de receptor de eventos de la clase contenedora de un control OLE, recibe los eventos desencadenados por el control antes de que los controle el contenedor del control.

ON_EVENT_REFLECT(theClass,  dispid, pfnHandler,  vtsParams)

Parámetros

theClass
Clase a la que pertenece este mapa de receptor de eventos.

dispid
Identificador de envío del evento desencadenado por el control.

pfnHandler
Puntero a una función miembro que controla el evento. Esta función debe tener un tipo de valor devuelto BOOL y tipos de parámetros que coincidan con los parámetros del evento (vea vtsParams). La función debe devolver TRUE para indicar que se ha controlado el evento; en caso contrario, FALSE.

vtsParams
Secuencia de constantes VTS_ que especifica los tipos de los parámetros del evento. Son las mismas constantes que se usan en entradas de mapa de envío, como DISP_FUNCTION.

Comentarios

El argumento vtsParams es una lista separada por espacios de valores de las constantes VTS_.

Uno o varios de estos valores, separados por espacios (no por comas), especifican la lista de parámetros de la función. Por ejemplo:

VTS_I2 VTS_BOOL

especifica una lista que contiene un entero corto seguido de un valor BOOL.

Para obtener una lista de las constantes VTS_, vea EVENT_CUSTOM.

Requisitos

Encabezado afxdisp.h

ON_PROPNOTIFY

Use la macro ON_PROPNOTIFY para definir una entrada de mapa de receptor de eventos para controlar las notificaciones de propiedades desde un control OLE.

ON_PROPNOTIFY(theClass, id, dispid, pfnRequest, pfnChanged)

Parámetros

theClass
Clase a la que pertenece este mapa de receptor de eventos.

id
Identificador de control del control OLE.

dispid
Identificador de envío de la propiedad implicada en la notificación.

pfnRequest
Puntero a una función miembro que controla la notificación OnRequestEdit de esta propiedad. Esta función debe tener un tipo de valor devuelto BOOL y un parámetro BOOL*. Esta función debe establecer el parámetro en TRUE para permitir que la propiedad cambie y FALSE para no permitirlo. La función debe devolver TRUE para indicar que se ha controlado la notificación; en caso contrario, FALSE.

pfnChanged
Puntero a una función miembro que controla la notificación OnChanged de esta propiedad. La función debe tener un tipo de valor devuelto BOOL y un parámetro UINT. La función debe devolver TRUE para indicar que se ha controlado esa notificación; en caso contrario, FALSE.

Comentarios

El argumento vtsParams es una lista separada por espacios de valores de las constantes VTS_. Uno o varios de estos valores, separados por espacios (no por comas), especifican la lista de parámetros de la función. Por ejemplo:

VTS_I2 VTS_BOOL

especifica una lista que contiene un entero corto seguido de un valor BOOL.

Para obtener una lista de las constantes VTS_, vea EVENT_CUSTOM.

ON_PROPNOTIFY_RANGE

Use la macro ON_PROPNOTIFY_RANGE para definir una entrada de mapa de receptor de eventos para controlar las notificaciones de propiedades desde cualquier control OLE que tenga un identificador de control dentro de un rango contiguo de identificadores.

ON_PROPNOTIFY_RANGE(theClass, idFirst, idLast, dispid, pfnRequest, pfnChanged)

Parámetros

theClass
Clase a la que pertenece este mapa de receptor de eventos.

idFirst
Identificador de control del primer control OLE del rango.

idLast
Identificador de control del último control OLE del rango.

dispid
Identificador de envío de la propiedad implicada en la notificación.

pfnRequest
Puntero a una función miembro que controla la notificación OnRequestEdit de esta propiedad. Esta función debe tener un tipo de valor devuelto BOOL y parámetros UINT y BOOL*. La función debe establecer el parámetro en TRUE para permitir que la propiedad cambie y FALSE para no permitirlo. La función debe devolver TRUE para indicar que se ha controlado esa notificación; en caso contrario, FALSE.

pfnChanged
Puntero a una función miembro que controla la notificación OnChanged de esta propiedad. La función debe tener un tipo de valor devuelto BOOL y un parámetro UINT. La función debe devolver TRUE para indicar que se ha controlado esa notificación; en caso contrario, FALSE.

Requisitos

Encabezado afxdisp.h

ON_PROPNOTIFY_REFLECT

La macro ON_PROPNOTIFY_REFLECT, cuando se usa en el mapa de receptor de eventos de la clase contenedora de un control OLE, recibe notificaciones de propiedades enviadas por el control antes de que las controle el contenedor del control.

ON_PROPNOTIFY_REFLECT(theClass, dispid, pfnRequest, pfnChanged)

Parámetros

theClass
Clase a la que pertenece este mapa de receptor de eventos.

dispid
Identificador de envío de la propiedad implicada en la notificación.

pfnRequest
Puntero a una función miembro que controla la notificación OnRequestEdit de esta propiedad. Esta función debe tener un tipo de valor devuelto BOOL y un parámetro BOOL*. Esta función debe establecer el parámetro en TRUE para permitir que la propiedad cambie y FALSE para no permitirlo. La función debe devolver TRUE para indicar que se ha controlado la notificación; en caso contrario, FALSE.

pfnChanged
Puntero a una función miembro que controla la notificación OnChanged de esta propiedad. La función debe tener un tipo de valor devuelto BOOL y ningún parámetro. La función debe devolver TRUE para indicar que se ha controlado la notificación; en caso contrario, FALSE.

Requisitos

Encabezado afxdisp.h

Consulte también

Macros y globales