Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
Nota:
La biblioteca Microsoft Foundation Classes (MFC) sigue siendo compatible. Sin embargo, ya no estamos agregando características ni actualizando la documentación.
Los métodos personalizados difieren de los métodos estándar en que no están ya 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 la asignación 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 su 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 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
Cargue el proyecto del control.
En la vista de clases, expanda el nodo de biblioteca del control.
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.
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.
En el cuadro Nombre del método , escriba PtInCircle.
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).
En el cuadro Tipo de valor devuelto , haga clic en VARIANT_BOOL para el tipo de valor devuelto del método.
Con los controles Tipo de parámetro y Nombre de parámetro, agregue un parámetro denominado xCoord (tipo OLE_XPOS_PIXELS).
Con los controles Tipo de parámetro y Nombre de parámetro, agregue un parámetro denominado yCoord (tipo OLE_YPOS_PIXELS).
Haga clic en Finalizar
Agregar cambios en el Asistente de Método para métodos personalizados
Al agregar un método personalizado, el Asistente para agregar métodos realiza algunos cambios en el encabezado de la clase de control (.H) e implementación (.CPP). La siguiente línea se agrega a la declaración del mapa de envío en el archivo de encabezado de la clase de control (.H):
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 línea siguiente 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, que es la posición del método en la lista de métodos y propiedades del Asistente para Agregar Método. Dado que se usó el Asistente para agregar métodos para añadir el método personalizado, la entrada para este 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 controladora del control PtInCircle, declara el tipo de valor devuelto como 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 del archivo de implementación (.CPP) del control. 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