Controles ActiveX de MFC: Métodos de personalizadas de suma
Los métodos personalizados difieren de los métodos comunes en que no implementa ya por COleControl.Debe proporcionar la implementación para cada método personalizado que se agrega al control.
Un usuario del control ActiveX puede llamar a un método personalizado en cualquier momento para realizar acciones específicos.La entrada de asignación de envío para los métodos personalizados tiene el formato DISP_FUNCTION.
Agregue un método personalizado Con el asistente para agregar métodos
El procedimiento siguiente muestra cómo agregar el método personalizado PtInCircle un código estructural del control ActiveX.PtInCircle determina dentro de si las coordenadas pasadas al control se o fuera del círculo.Este mismo procedimiento también se puede utilizar para agregar otros métodos personalizados.Sustituya el nombre de método y los parámetros para el nombre y los parámetros del método de PtInCircle.
[!NOTA]
Este ejemplo utiliza la función de InCircle de los eventos de caso.Para obtener más información sobre esta función, vea el artículo Controles ActiveX de MFC: Agregar eventos personalizados a un control ActiveX.
Para agregar el método personalizado de PtInCircle mediante el asistente para agregar métodos
Cargue el proyecto de control.
En la vista de clases, expanda el nodo de la biblioteca del control.
Haga clic con el botón secundario en el nodo de la interfaz para el control (el segundo nodo el nodo de biblioteca) para abrir el menú contextual.
En el menú contextual, haga clic agregar y haga clic en Add Method.
Se abrirá el asistente para agregar métodos.
En el cuadro de Nombre del método , PtInCircleescrito.
En el cuadro de Internal Name , escriba el nombre de la función interna de método o use el valor predeterminado (en este caso, PtInCircle).
En el cuadro de Tipo de valor devuelto , haga clic en VARIANT_BOOL para el tipo de valor devuelto del método.
Mediante los controles de Tipo de parámetro y de Nombre del parámetro , agregue un parámetro denominado xCoord (tipo OLE_XPOS_PIXELS).
Mediante los controles de Tipo de parámetro y de Nombre del parámetro , agregue un parámetro denominado yCoord(tipo OLE_YPOS_PIXELS).
Haga clic en Finalizar.
Agregue los cambios del asistente de método para métodos personalizados
Cuando se agrega un método personalizado, el asistente para agregar realiza algunos cambios en el encabezado de la clase control (. H) y archivos de implementación (.CPP).La siguiente línea se agrega a la declaración del mapa de distribución en el encabezado de la clase control (. h) archivo:
VARIANT_BOOL PtInCircle(OLE_XPOS_PIXELS xCoord, OLE_YPOS_PIXELS yCoord);
Este código declara un método PtInCircledenominado controlador de envío.Esta función se puede llamar el usuario del control mediante el nombre externo PtInCircle.
La siguiente línea se agrega al archivo de .IDL de control:
[id(1), helpstring("method PtInCircle")] VARIANT_BOOL PtInCircle(OLE_XPOS_PIXELS xCoord, OLE_YPOS_PIXELS yCoord);
Esta línea asigna al método de PtInCircle el número de identificación concreto, la posición de los métodos del asistente para agregar métodos y la lista de propiedades.Dado que utilizaban el asistente para agregar métodos para agregar el método personalizado, la entrada para él se agregó automáticamente al archivo de .IDL del proyecto.
Además, la línea siguiente, ubicada en el archivo de implementación (.CPP) de la clase de control, se agrega al envío de control asignado:
DISP_FUNCTION_ID(CMyAxUICtrl, "PtInCircle", dispidPtInCircle, PtInCircle, VT_BOOL, VTS_XPOS_PIXELS VTS_YPOS_PIXELS)
La macro de DISP_FUNCTION asigna el método PtInCircle a la función de controlador de control, PtInCircle, declara el tipo de valor devuelto para ser VARIANT_BOOL, y declara dos parámetros de VTS_XPOS_PIXELS escrito y de VTS_YPOSPIXELS que se pasarán a PtInCircle.
Finalmente, el asistente para agregar agrega la función CSampleCtrl::PtInCircle de código auxiliar al archivo de implementación del control (.CPP).Para que PtInCircle funcione como se indicó anteriormente, debe modificarse como sigue:
VARIANT_BOOL CMyAxUICtrl::PtInCircle(OLE_XPOS_PIXELS xCoord, OLE_YPOS_PIXELS yCoord)
{
AFX_MANAGE_STATE(AfxGetStaticModuleState());
CPoint point(xCoord, yCoord);
return InCircle(point);
}
Vea también
Referencia
Iconos de la Vista de clases y del Examinador de objetos