Compartir a través de


Contenedores de controles ActiveX: Controlar eventos de un control ActiveX

En este artículo se describe mediante la ventana Propiedades para instalar controladores de eventos para controles ActiveX en un contenedor de controles ActiveX.Se utilizan los controladores de eventos para recibir notificaciones (del control) de ciertos eventos y realizar alguna acción en respuesta.Esta notificación se denomina la “despedida” el evento.

[!NOTA]

Este artículo utiliza un contenedor diálogos de proyecto denominado de contenedor de controles ActiveX y un control incrustado denominados Circ como ejemplos en los procedimientos y el código.

Mediante el botón eventos en la ventana Propiedades, puede crear un mapa de los eventos que pueden aparecer en la aplicación contenedora de controles ActiveX.Este mapa, denominado “mapa de receptor de eventos,” crea y mantiene por Visual C++ cuando agregue controladores de eventos a la clase del contenedor del control.Cada controlador de eventos, implementado con un evento asigna entrada, asigna un evento específico de una función miembro del controlador de eventos del contenedor.Esta función se denomina de controlador de eventos al evento especificado es desencadenado por el objeto de control ActiveX.

Para obtener más información sobre asignaciones de receptor de eventos, vea Mapas de receptor de eventos en la referencia de la biblioteca de clases.

Controlador de eventos Modifications al proyecto

Cuando se utiliza la ventana Propiedades para agregar controladores de eventos, un mapa de receptor de eventos está declarado y definido en el proyecto.Las instrucciones siguientes se agregan al archivo de control .CPP la primera vez que agrega un controlador de eventos.Este código declara un receptor de eventos asignado para la clase de cuadro de diálogo (en este caso, CContainerDlg):

BEGIN_EVENTSINK_MAP(CContainerDlg, CDialog)


...


END_EVENTSINK_MAP()

Cuando utiliza la ventana Propiedades para agregar eventos, un evento asigna la entrada (ON_EVENT) se agrega al mapa de receptor de eventos y una función de controlador de eventos se agrega al archivo de implementación de contenedor (.CPP).

El ejemplo siguiente declara un controlador de eventos, denominado OnClickInCircCtrl, para el evento de ClickIn de control de Circ:

BEGIN_EVENTSINK_MAP(CContainerDlg, CDialog)
   ON_EVENT(CContainerDlg, IDC_CIRCCTRL1, 1 /* ClickIn */, OnClickInCircctrl1, 
      VTS_I4 VTS_I4)
END_EVENTSINK_MAP()

Además, la plantilla siguiente se agrega al archivo de implementación de la clase de CContainerDlg (.CPP) para la función miembro de controlador de eventos:

BOOL CContainerDlg::OnClickInCircctrl1(OLE_XPOS_PIXELS nX, OLE_YPOS_PIXELS nY)
{
   // use nX and nY here
   TRACE(_T("nX = %d, nY = %d\n"), nX, nY);
   return TRUE;
}

Para obtener más información acerca de las macros de receptor de eventos, vea Mapas de receptor de eventos en la referencia de la biblioteca de clases.

Para crear una función de controlador de eventos

  1. En la vista de clases, seleccione la clase de diálogo que contiene el control ActiveX.Para este ejemplo, utilice CContainerDlg.

  2. En la ventana Propiedades, haga clic en el botón Eventos.

  3. En la ventana Propiedades, seleccione el identificador de control ActiveX incrustado.Para este ejemplo, utilice IDC_CIRCCTRL1.

    La ventana Propiedades muestra una lista de los eventos que se pueden desencadenar el control ActiveX incrustado.Cualquier función miembro mostrada en negrita ya tiene funciones controladoras asignadas a él.

  4. Seleccione el evento que desea que la clase de diálogo para controlar.Para este ejemplo, seleccione Haga clic en.

  5. En el cuadro de lista desplegable a la derecha, seleccione agregar ClickCircctrl1.

  6. Haga doble clic en la nueva función de controlador de vista de la clase para saltar al código de controlador de eventos en el archivo de implementación (.CPP) de CContainerDlg.

Vea también

Conceptos

Contenedores de controles ActiveX