¿Qué es MFC?

¿Qué es MFC?

Si quieres crear una aplicación para Windows, ¿cómo deberías empezar?

Un buen punto de partida es diseñar la interfaz de usuario. Primero, debe decidir qué tipo de usuarios pueden usar el programa y configurar los objetos de interfaz de usuario correspondientes según sea necesario. La interfaz de usuario de Windows tiene algunos controles estándar, como botones, menús, barras de desplazamiento y listas, que ya son familiares para los usuarios de Windows. Lo que hay que recordar es que usted, el programador, debe seleccionar un conjunto de controles y decidir cómo organizarlos en la pantalla. Tradicionalmente, dibujabas la interfaz de usuario en papel hasta que estabas satisfecho con los elementos. Esto está bien para algunos proyectos más pequeños, así como para las primeras etapas de creación de prototipos de proyectos más grandes. El siguiente paso es implementar el código. Al crear aplicaciones para cualquier plataforma Windows, los programadores tienen dos opciones: C o C. Con C, los programadores escriben código en el nivel de la interfaz de programación de aplicaciones (API) de Windows. La interfaz se compone de cientos de funciones C, que se describen en el Manual de referencia de la API de Windows. Para Windows NT, la API se llama "API Win32" para distinguirla de su API de 16 bits para Windows 3.1. Microsoft también proporciona una biblioteca C que se ubica encima de cualquier API de Windows para facilitar el trabajo del programador. Es la Biblioteca de clases básica de Microsoft (MFC). La principal ventaja de esta biblioteca es su alta eficiencia. Reduce gran parte del código que se debe escribir al crear programas de Windows. También proporciona todas las ventajas de la programación general en C, como herencia y encapsulación. MFC es portátil; por ejemplo, el código escrito en Windows 3.1 se puede portar fácilmente a Windows NT o Windows 95. Por tanto, MFC es un método muy recomendado para desarrollar aplicaciones de Windows. MFC se utilizará a lo largo de este tutorial. Cuando usa MFC, escribe código para crear los controles de interfaz de usuario necesarios y personalizar su apariencia. También necesita escribir código que responda a las operaciones del usuario en estos controles. Por ejemplo, si el usuario hace clic en un botón, debería tener un código para responder. Este es el código basado en eventos que conforma todas las aplicaciones. Una vez que la aplicación responde correctamente a todos los controles permitidos, su tarea estará completa.

El entorno de desarrollo de aplicaciones Visual C es particularmente adecuado para usar MFC (también hay otros entornos de desarrollo que usan MFC, como C Builder que también incluye soporte para MFC), por lo que aprender MFC y Visual C juntos puede mejorar su Capacidad para desarrollar programas.

Las aplicaciones de Windows utilizan varios controles estándar:

Etiquetas de texto estático

Botones

Cuadros de lista

Cuadro combinado (un cuadro de lista más avanzado)

Botón de opción (botón de opción)

Botón de verificación (casilla de verificación)

Cuadro de edición (de una sola línea y de varias líneas )

Barras de desplazamiento

Puede crear estos controles a través del código o el "Editor de recursos", donde puede crear cuadros de diálogo y estos controles. En este tutorial los construiremos usando código.

Windows admite varios tipos de ventanas de aplicaciones. Una aplicación típica debería estar activa en lo que se llama una "ventana de marco". Una ventana de marco es una ventana principal completamente funcional que el usuario puede cambiar de tamaño, minimizar, maximizar, etc. Windows también admite dos tipos de cuadros de diálogo: cuadros de diálogo modales y no modal. Una vez que aparece un cuadro de diálogo modal en la pantalla, el resto de la aplicación en la pantalla responde solo cuando sale.

Cuando aparece un cuadro de diálogo no modelo en la pantalla, el resto del programa puede responder como si estuviera flotando sobre él.

La aplicación de Windows más sencilla utiliza la interfaz de documento único (SDI), con un solo marco de ventana. El reloj de Windows, el editor PIF, el Bloc de notas, etc. son ejemplos de aplicaciones SDI. Windows también proporciona una forma de organización llamada interfaz de documentos múltiples, que puede usarse para aplicaciones más complejas. Los sistemas MDI permiten a los usuarios ver múltiples documentos simultáneamente dentro de la misma aplicación. Por ejemplo, un editor de texto puede permitir a los usuarios abrir varios archivos de texto simultáneamente. Cuando se usa MDI, la aplicación tiene una ventana principal y hay algunas subventanas en la ventana principal, cada subventana contiene su propio documento. En un marco MDI, la ventana principal tiene un menú principal que es válido para la ventana superior del marco principal. Cada subventana se puede reducir a un ícono o expandir, y la ventana principal de MDI también se puede convertir en un ícono en el escritorio. La interfaz MDI puede darle la sensación de tener un segundo escritorio y es muy útil para administrar ventanas y eliminar ventanas desordenadas.

Cada aplicación que crea utiliza su propio conjunto de controles, estructuras de menú y cuadros de diálogo. La calidad de la interfaz de su aplicación depende de cómo seleccione y organice estos objetos de la interfaz. El editor de recursos en Visual C le permite crear y personalizar fácilmente estos objetos de interfaz.

Software basado en eventos y vocabulario

Todas las GUI basadas en ventanas contienen los mismos elementos básicos y funcionan de la misma manera. En la pantalla lo que ve el usuario es un conjunto de ventanas, cada una de las cuales contiene controles, íconos, objetos y algunos elementos para el manejo del mouse y el teclado. Desde la perspectiva del usuario, los objetos de la interfaz de cada sistema son los mismos: botones, barras de desplazamiento, iconos, cuadros de diálogo, menús desplegables, etc. Aunque la "apariencia" de estos elementos de la interfaz puede ser algo diferente, la forma en que funcionan estos objetos de la interfaz es la misma. Por ejemplo, las barras de desplazamiento pueden ser diferentes para Windows, Mac y Motif, pero tienen exactamente el mismo propósito.

Desde la perspectiva de un programador, estos sistemas son conceptualmente similares, aunque pueden ser bastante diferentes. Para construir un programa GUI, el primer paso del programador es colocar todos los controles de interfaz de usuario necesarios en la ventana. Por ejemplo, si un programador quiere crear un programa simple que convierta de Celsius a Fahrenheit, el programador selecciona un objeto de interfaz de usuario para completar y mostrar el resultado en la pantalla. En este programa simple, el programador puede requerir que el usuario ingrese un valor de temperatura en un cuadro de edición editable, muestre los resultados de la conversión en un cuadro de edición no editable y luego permita al usuario hacer clic en un botón denominado "Salir" para salir del solicitud.

Como es el usuario quien opera los controles de la aplicación, el programa debe responder. La respuesta depende de las acciones del usuario en diferentes controles usando el mouse o el teclado. Cada objeto de la interfaz de usuario en la pantalla responde a los eventos de manera diferente. Por ejemplo, si el usuario hace clic en el botón Salir, el botón debe actualizar la pantalla, resaltándose. El programa debe entonces salir en respuesta.

El modelo utilizado por Windows es similar. En una aplicación típica, creará una ventana principal y colocará en ella algunos controles de interfaz de usuario. Estos controles suelen denominarse subventanas: son como subventanas más pequeñas y especializadas dentro de la ventana principal. Como programador, debe operar estos controles enviando información a través de llamadas a funciones y responder a las operaciones del usuario enviando información a su código.

Si nunca has hecho programación basada en eventos, todo esto puede parecerte extraño. Sin embargo, el enfoque de programación basada en eventos es fácil de entender. Los detalles específicos pueden variar un poco de un sistema a otro, pero el concepto básico es similar. En una interfaz basada en eventos, la aplicación dibuja varios objetos de la interfaz en la pantalla, como botones, áreas de texto y menús. Las aplicaciones suelen responder a las acciones del usuario a través de un código llamado bucle de eventos.

Los usuarios pueden utilizar el mouse o el teclado para manipular objetos en la pantalla. Por ejemplo, el usuario hace clic en un botón con el mouse. Un clic del mouse se llama evento. Los sistemas controlados por eventos definen las acciones del usuario, como los clics del mouse y las operaciones del teclado, como eventos, y las operaciones del sistema, como la actualización de la pantalla, como eventos.

En métodos de programación de nivel relativamente bajo, como escribir aplicaciones API de Windows directamente en C, la cantidad de código es muy grande porque hay que cuidar demasiados detalles. Por ejemplo, utiliza algún tipo de estructura para recibir eventos de clic del mouse. El código de su bucle de eventos examinará los diferentes campos de la estructura para determinar qué objeto de la interfaz de usuario se vio afectado y luego tomará las medidas adecuadas. Las aplicaciones pueden volverse muy grandes cuando hay muchos objetos en la pantalla. Se necesitaría mucho código para manejar simplemente en qué objeto se hizo clic y qué se debe hacer con él.

Afortunadamente, puedes programar de una forma más avanzada, utilizando MFC. En MFC, casi todo el procesamiento de detalles de bajo nivel se realiza por usted. Si coloca un objeto de interfaz de usuario en la pantalla, solo necesita dos líneas de código para crearlo. Si el usuario hace clic en un botón, el botón mismo hace todo lo necesario, desde actualizar su apariencia en la pantalla hasta llamar a las funciones del preprocesador en su programa. Esta función contiene el código para realizar la operación correspondiente en el botón. MFC maneja todos los detalles por usted: usted crea el botón y le indica una función de controlador específica, y cuando se presiona, llama a la función correspondiente. La parte 4 presenta cómo utilizar el mapeo de mensajes para manejar eventos.