Compartir a través de


Controles ActiveX de MFC: Agregar métodos personalizados

Los métodos personalizados difieren de los métodos de stock en que aún no están implementados por COleControl. 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 desarrollo nuevo. Para obtener más información sobre las tecnologías modernas que sustituyen a ActiveX, consulte 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 mapa de distribución para los métodos personalizados tiene el formato DISP_FUNCTION.

Agregar 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 esqueleto de un control ActiveX. PtInCircle determina si las coordenadas que se pasan 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 para el nombre y los parámetros del método PtInCircle.

Nota:

En este ejemplo se usa la InCircle función del artículo Eventos. Para obtener más información sobre esta función, consulte el artículo Controles ActiveX de 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 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, a continuación, haga clic 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

Agregar cambios del Asistente para métodos personalizados

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

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 PtInCircleexterno .

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

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

Esta línea asigna al PtInCircle método un número de identificador específico, la posición del método en la lista Agregar métodos y propiedades 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 ella se agregó automáticamente al objeto del proyecto. Archivo IDL.

Además, la línea siguiente, ubicada en la implementación (. El archivo CPP) de la clase de control se agrega al mapa 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 el tipo de valor devuelto que se va a VARIANT_BOOL y declara dos parámetros de tipo VTS_XPOS_PIXELS y VTS_YPOSPIXELS que se van a pasar a PtInCircle.

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

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 vista de clases y explorador de objetos