Compartir a través de


Controles ActiveX de MFC

Un control ActiveX es un componente de software reutilizable basado en el Modelo de objetos componentes (COM) que admite una amplia variedad de funcionalidadES OLE y se puede personalizar para adaptarse a muchas necesidades de software.

Importante

ActiveX es una tecnología heredada que no se debe usar para el desarrollo nuevo. Para obtener más información, consulte Controles ActiveX.

Los controles ActiveX están diseñados para su uso tanto en contenedores de controles ActiveX normales como en Internet, en páginas World Wide Web. Puede crear controles ActiveX con MFC, descritos aquí o con la Biblioteca de plantillas activas (ATL).

Un control ActiveX se puede dibujar en su propia ventana, responder a eventos (como clics del mouse) y administrarse a través de una interfaz que incluya propiedades y métodos similares a los de los objetos automation.

Estos controles se pueden desarrollar para muchos usos, como el acceso a bases de datos, la supervisión de datos o el grafo. Además de su portabilidad, los controles ActiveX admiten características que anteriormente no estaban disponibles para los controles ActiveX, como la compatibilidad con contenedores OLE existentes y la capacidad de integrar sus menús con los menús de contenedor OLE. Además, un control ActiveX es totalmente compatible con Automation, lo que permite que el control exponga propiedades de lectura y escritura y un conjunto de métodos a los que puede llamar el usuario de control.

Puede crear controles ActiveX sin ventana y controles que solo creen una ventana cuando se activen. Los controles sin ventana aceleran la visualización de la aplicación y permiten tener controles transparentes y no rerectangulares. También puede cargar las propiedades del control ActiveX de forma asincrónica.

Un control ActiveX se implementa como un servidor en proceso (normalmente un objeto pequeño) que se puede usar en cualquier contenedor OLE. Tenga en cuenta que la funcionalidad completa de un control ActiveX solo está disponible cuando se usa dentro de un contenedor OLE diseñado para tener en cuenta los controles ActiveX. Consulte Puerto de controles ActiveX a otras aplicaciones para obtener una lista de contenedores que admiten controles ActiveX. Este tipo de contenedor, que posteriormente se denomina "contenedor de controles", puede operar un control ActiveX mediante las propiedades y métodos del control, y recibe notificaciones del control ActiveX en forma de eventos. En la ilustración siguiente se muestra esta interacción.

Interacción del contenedor y el control de controles ActiveX.
Interacción entre un contenedor de controles ActiveX y un control ActiveX con ventanas

Para obtener información reciente sobre cómo optimizar los controles ActiveX, consulte Controles ActiveX de MFC: Optimización.

Para crear un control ActiveX de MFC, consulte Creación de un proyecto de control ActiveX.

Para obtener más información, consulte:

Componentes básicos de un control ActiveX

Un control ActiveX usa varios elementos mediante programación para interactuar de forma eficaz con un contenedor de control y con el usuario. Se trata de la clase COleControl, un conjunto de funciones de activación de eventos y un mapa de distribución.

Cada objeto de control ActiveX que desarrolle hereda un conjunto eficaz de características de su clase base MFC, COleControl. Estas características incluyen la activación local y la lógica de Automatización. COleControl puede proporcionar al objeto de control la misma funcionalidad que un objeto de ventana MFC, además de la capacidad de desencadenar eventos. COleControl también puede proporcionar controles sin ventana, que dependen de su contenedor para obtener ayuda con algunas de las funciones que proporciona una ventana (captura del mouse, foco del teclado, desplazamiento), pero ofrecen una pantalla mucho más rápida.

Dado que la clase de control deriva de COleControl, hereda la capacidad de enviar, o "activar", mensajes, denominados eventos, al contenedor de control cuando se cumplen determinadas condiciones. Estos eventos se usan para notificar al contenedor de control cuando ocurre algo importante en el control. Puede enviar información adicional sobre un evento al contenedor de control adjuntando parámetros al evento. Para obtener más información sobre los eventos de control ActiveX, consulte el artículo Controles ActiveX de MFC: Eventos.

El elemento final es un mapa de distribución, que se usa para exponer un conjunto de funciones (denominados métodos) y atributos (denominados propiedades) al usuario de control. Las propiedades permiten que el contenedor de control o el usuario de control manipulen el control de varias maneras. El usuario puede cambiar la apariencia del control, cambiar ciertos valores del control o realizar solicitudes del control, como acceder a un fragmento específico de datos que mantiene el control. El desarrollador del control determina esta interfaz y se define mediante la vista de clases. Para obtener más información sobre los métodos y propiedades del control ActiveX, vea los artículos Controles ActiveX de MFC: Métodos y propiedades.

Interacción entre controles con contenedores de controles Windows y ActiveX

Cuando se usa un control dentro de un contenedor de controles, usa dos mecanismos para comunicarse: expone propiedades y métodos y desencadena eventos. En la ilustración siguiente se muestra cómo se implementan estos dos mecanismos.

El control ActiveX se comunica con su contenedor.
Comunicación entre un contenedor de controles ActiveX y un control ActiveX

En la ilustración anterior también se muestra cómo se controlan otras interfaces OLE (además de la automatización y los eventos) mediante controles.

La comunicación de un control con el contenedor se realiza mediante COleControl. Para controlar algunas de las solicitudes del contenedor, COleControl llamará a funciones miembro que se implementan en la clase de control. Todos los métodos y algunas propiedades se controlan de esta manera. La clase del control también puede iniciar la comunicación con el contenedor llamando a funciones miembro de COleControl. Los eventos se desencadenan de esta manera.

Estados activos e inactivos de un control ActiveX

Un control tiene dos estados básicos: activo e inactivo. Tradicionalmente, estos estados se distinguen por si el control tenía una ventana. Un control activo tenía una ventana; Un control inactivo no lo hizo. Con la introducción de la activación sin ventanas, esta distinción ya no es universal, pero todavía se aplica a muchos controles.

Cuando un control sin ventanas se activa, invoca la captura del mouse, el foco del teclado, el desplazamiento y otros servicios de ventana desde su contenedor. También puede proporcionar interacción del mouse a controles inactivos, así como crear controles que esperen hasta que se activen para crear una ventana.

Cuando un control con una ventana se activa, puede interactuar completamente con el contenedor de controles, el usuario y Windows. En la ilustración siguiente se muestran las rutas de comunicación entre el control ActiveX, el contenedor de controles y el sistema operativo.

Procesamiento de mensajes en el control ActiveX con ventana activa.
Procesamiento de mensajes de Windows en un control ActiveX con ventanas (cuando está activo)

Serialización

La capacidad de serializar datos, a veces denominados persistencia, permite al control escribir el valor de sus propiedades en el almacenamiento persistente. Los controles se pueden volver a crear leyendo el estado del objeto desde el almacenamiento.

Tenga en cuenta que un control no es responsable de obtener acceso al medio de almacenamiento. En su lugar, el contenedor del control es responsable de proporcionar al control un medio de almacenamiento que se usará en los momentos adecuados. Para obtener más información sobre la serialización, consulte el artículo Controles ActiveX de MFC: Serialización. Para obtener información sobre cómo optimizar la serialización, consulte Optimización de la persistencia e inicialización en controles ActiveX: Optimización.

Instalación de clases y herramientas de control ActiveX

Al instalar Visual C++, las clases de control ActiveX de MFC y los archivos DLL en tiempo de ejecución del control ActiveX de depuración se instalan automáticamente si los controles ActiveX están seleccionados en el programa de instalación (se seleccionan de forma predeterminada).

De forma predeterminada, las herramientas y clases de control ActiveX se instalan en los subdirectorios siguientes en \Archivos de programa\Microsoft Visual Studio .NET:

  • \Common7\Tools

    Contiene los archivos de contenedor de prueba (TstCon32.exe, así como sus archivos de Ayuda).

  • \Vc7\atlmfc\include

    Contiene los archivos de inclusión necesarios para desarrollar controles ActiveX con MFC.

  • \Vc7\atlmfc\src\mfc

    Contiene el código fuente para clases de control ActiveX específicas en MFC.

  • \Vc7\atlmfc\lib

    Contiene las bibliotecas necesarias para desarrollar controles ActiveX con MFC.

También hay ejemplos para controles ActiveX de MFC. Para obtener más información sobre estos ejemplos, vea Ejemplos de controles: MFC-Based controles ActiveX.

Consulte también

Elementos de la interfaz de usuario