Controles ActiveX MFC: Métodos
Un control ActiveX desencadena eventos para comunicarse entre sí y su contenedor de control. Un contenedor también puede comunicarse con un control mediante métodos y propiedades. Los métodos también se denominan funciones.
Los métodos y propiedades proporcionan una interfaz exportada para su uso por otras aplicaciones, como clientes de Automation y contenedores de controles ActiveX. Para más información sobre las propiedades de controles ActiveX, consulte el artículo Controles ActiveX de MFC: Propiedades.
Los métodos son similares en cuanto al uso y el propósito a las funciones miembro de una clase de C++. Hay dos tipos de métodos que el control puede implementar: stock y personalizado. De forma similar a los eventos de stock, los métodos de stock son los métodos para los que COleControl proporciona una implementación. Para más información sobre los métodos de stock, consulte el artículo Controles ActiveX de MFC: Adición de métodos de stock. Los métodos personalizados, definidos por el desarrollador, permiten una personalización adicional del control. Para más información, consulte el artículo Controles ActiveX de MFC: Adición de métodos personalizados.
La biblioteca MFC implementa un mecanismo que permite que el control admita métodos personalizados y de stock. La primera parte es la clase COleControl
. Derivada de CWnd
, las funciones miembro COleControl
admiten métodos de stock que son comunes a todos los controles ActiveX. La segunda parte de este mecanismo es la asignación de distribución. Una asignación de distribución es similar a una asignación de mensajes; sin embargo, en lugar de asignar una función a un identificador de mensaje de Windows, una asignación de distribución asigna funciones miembro virtuales a identificadores de IDispatch.
Para que un control admita correctamente varios métodos, su clase debe declarar una asignación de distribución. Esto se logra mediante la siguiente línea de código ubicada en el archivo de encabezado de clase de control (.H):
DECLARE_DISPATCH_MAP()
El propósito principal de la asignación de distribución es establecer la relación entre los nombres de método usados por un llamador externo (como el contenedor) y las funciones miembro de la clase del control que implementan los métodos. Una vez declarada la asignación de distribución, debe definirse en el archivo de implementación del control (.CPP). Las siguientes líneas de código definen la asignación de distribución:
BEGIN_DISPATCH_MAP(CMyAxUICtrl, COleControl)
END_DISPATCH_MAP()
Si usó el Asistente para controles ActiveX de MFC para crear el proyecto, estas líneas se agregaron automáticamente. Si no se usó el Asistente para controles ActiveX de MFC, debe agregar estas líneas manualmente.
En los artículos siguientes se describen estos métodos con detalle: