Compartir a través de


Controles ActiveX MFC: Agregar métodos personalizados

Los métodos personalizados difieren de los métodos estándar en que COleControl aún no los implementa. Debe proporcionar la implementación de cada método personalizado que agregue al control.

Importante

ActiveX es una tecnología heredada que no se debe usar para el nuevo desarrollo. Para más información sobre las tecnologías modernas que reemplazan a ActiveX, vea Controles ActiveX.

Un usuario de control ActiveX puede llamar a un método personalizado en cualquier momento para realizar acciones específicas del control. La entrada de la asignación de distribución para los métodos personalizados tiene el formato DISP_FUNCTION.

Incorporación de un método personalizado con el Asistente para agregar métodos

En el procedimiento siguiente, se muestra cómo agregar el método personalizado PtInCircle al código de esqueleto de un control ActiveX. PtInCircle determina si las coordenadas pasadas al control están dentro o fuera del círculo. Este mismo procedimiento también se puede usar para agregar otros métodos personalizados. Sustituya el nombre del método personalizado y sus parámetros por el nombre y los parámetros del método PtInCircle.

Nota:

En este ejemplo, se usa la función InCircle del artículo Eventos. Para más información sobre esta función, consulte el artículo Controles ActiveX MFC: Agregar eventos personalizados a un control ActiveX.

Para agregar el método personalizado PtInCircle mediante el Asistente para agregar métodos

  1. Cargue el proyecto del control.

  2. En la vista de clases, expanda el nodo de biblioteca del control.

  3. Haga clic con el botón derecho en el nodo de interfaz del control (el segundo nodo del nodo de biblioteca) para abrir el menú contextual.

  4. En el menú contextual, haga clic en Agregar y después en Agregar método.

    Se abrirá el Asistente para agregar métodos.

  5. En el cuadro Nombre del método, escriba PtInCircle.

  6. En el cuadro Nombre interno, escriba el nombre de la función interna del método o use el valor predeterminado (en este caso, PtInCircle).

  7. En el cuadro Tipo de valor devuelto, haga clic en VARIANT_BOOL para el tipo de valor devuelto del método.

  8. Con los controles Tipo de parámetro y Nombre de parámetro, agregue un parámetro denominado xCoord (tipo OLE_XPOS_PIXELS).

  9. Con los controles Tipo de parámetro y Nombre de parámetro, agregue un parámetro denominado yCoord (tipo OLE_YPOS_PIXELS).

  10. Haga clic en Finalizar

Cambios del Asistente para agregar métodos para métodos personalizados

Cuando se agrega un método personalizado, el Asistente para agregar métodos hace algunos cambios en los archivos de encabezado (.H) e implementación (.CPP) de la clase de control. La línea siguiente se agrega a la declaración de asignación de distribución en el archivo de encabezado (.H) de la clase de control:

VARIANT_BOOL PtInCircle(OLE_XPOS_PIXELS xCoord, OLE_YPOS_PIXELS yCoord);

Este código declara un controlador de método de distribución denominado PtInCircle. El usuario del control puede llamar a esta función mediante el nombre externo PtInCircle.

La siguiente línea se agrega al archivo .IDL del control:

[id(1), helpstring("method PtInCircle")] VARIANT_BOOL PtInCircle(OLE_XPOS_PIXELS xCoord, OLE_YPOS_PIXELS yCoord);

Esta línea asigna al método PtInCircle un número de identificador específico, la posición del método en la lista de propiedades y métodos del Asistente para agregar métodos. Dado que el Asistente para agregar métodos se usó para agregar el método personalizado, la entrada para la que se agregó automáticamente al archivo .IDL del proyecto.

Además, la línea siguiente, ubicada en el archivo de implementación (.CPP) de la clase de control, se agrega a la asignación de distribución del control:

DISP_FUNCTION_ID(CMyAxUICtrl, "PtInCircle", dispidPtInCircle, PtInCircle, VT_BOOL, VTS_XPOS_PIXELS VTS_YPOS_PIXELS)

La macro DISP_FUNCTION asigna el método PtInCircle a la función de controlador del control, PtInCircle, declara que el tipo de valor devuelto sea VARIANT_BOOL y que dos parámetros de tipo VTS_XPOS_PIXELS y VTS_YPOSPIXELS se pasarán a PtInCircle.

Por último, el Asistente para agregar métodos agrega la función CSampleCtrl::PtInCircle de código auxiliar a la parte inferior del archivo de implementación (.CPP) del control. Para que PtInCircle funcione como se indicó anteriormente, se debe modificar de la manera siguiente:

VARIANT_BOOL CMyAxUICtrl::PtInCircle(OLE_XPOS_PIXELS xCoord, OLE_YPOS_PIXELS yCoord)
{
   AFX_MANAGE_STATE(AfxGetStaticModuleState());

   CPoint point(xCoord, yCoord);
   return InCircle(point);
}

Consulte también

Controles ActiveX de MFC
Iconos de la Vista de clases y del Examinador de objetos