El paquete Microsoft Foundation Classes (MFC) es una biblioteca de C++ desarrollada por Microsoft y diseñada para facilitar el desarrollo de aplicaciones GUI para Microsoft Windows mediante el uso de un amplio conjunto de clases de biblioteca.
La biblioteca MFC, al igual que su principal competidor, Borland VCL , facilita el trabajo con la GUI mediante la creación de un marco de aplicación : un programa "esqueleto" que se crea automáticamente de acuerdo con un diseño de interfaz determinado y se hace cargo por completo de las acciones de rutina para su mantenimiento (procesamiento de eventos de ventana, transferencia de datos entre búferes de elementos internos y variables de programa, etc.). Después de generar el marco de la aplicación, el programador solo necesita ingresar el código en los lugares donde se requieren acciones especiales. El marco debe tener una estructura bien definida, por lo que Visual C++ proporciona asistentes para generarlo y modificarlo.
Además, MFC proporciona una capa de contenedores orientada a objetos ( envoltorios en inglés ) sobre muchas de las funciones de la API de Windows , lo que hace que trabajar con ellos sea un poco más conveniente. Esta capa representa una gran cantidad de objetos integrados en el sistema (ventanas, widgets , archivos, etc.) en forma de clases y, nuevamente, se ocupa de acciones rutinarias como cerrar descriptores y asignar/liberar memoria.
Agregar código de aplicación al marco se implementa de dos maneras. El primero utiliza el mecanismo de herencia : las principales estructuras de programa del marco se presentan en forma de clases heredadas de las de biblioteca. Estas clases proporcionan muchas funciones virtuales llamadas en ciertos puntos del programa. Al redefinir (en la mayoría de los casos es necesario llamar a una función de la clase base) estas funciones, el programador puede agregar ejecución en estos puntos en su código.
El segundo método se usa para agregar controladores de eventos de ventana. El asistente crea matrices especiales dentro de los marcos de las clases asociadas con las ventanas: mapas de mensajes (ventana) (mapa de mensajes ing . ) , que contienen pares de "ID de mensaje: puntero a controlador". Al agregar/eliminar un controlador, el asistente realiza cambios en el mapa de mensajes correspondiente.
La primera versión de MFC se lanzó con la versión 7 del compilador C/C++ de 16 bits de Microsoft en 1992. Para quienes estaban desarrollando aplicaciones usando funciones API , el paquete MFC prometía un aumento muy significativo en la productividad del proceso de programación.
Una característica notable de MFC es el prefijo "Afx" que se usa en los nombres de muchas funciones, macros y el nombre del archivo de encabezado estándar "stdafx.h". En una etapa temprana de desarrollo, lo que luego se conoció como MFC se denominó "Extensiones del marco de aplicación" y se abrevia como "Afx". La decisión de cambiar el nombre a Microsoft Foundation Classes (MFC) se tomó demasiado tarde para cambiar las referencias a Afx en el código.
Object Windows Library (OWL), desarrollado por Borland para ejecutar su propio compilador de C++ , fue un producto de la competencia introducido durante el mismo período. Borland finalmente detuvo el desarrollo de OWL y adquirió una licencia a corto plazo para usar las bibliotecas MFC, pero nunca ofreció soporte completo de MFC en sus productos. Borland luego lanzó VCL como reemplazo de OWL.
El enfoque de Microsoft en MFC se ha relajado a favor de Microsoft .NET Framework . Sin embargo, a pesar de esto, MFC sigue siendo popular entre los desarrolladores.
En abril de 2008, Microsoft lanzó, después de años de inactividad, una importante actualización de MFC llamada MFC Feature Pack. Esta actualización se ofreció para su instalación como complemento de Visual Studio 2008. Básicamente, se trataba de clases MFC adicionales, cuyos derechos se adquirieron de la empresa rusa BCGSoft [1] . MFC incluyó soporte para la nueva interfaz Ribbon y varias otras mejoras relacionadas con controles de interfaz mejorados. Desde el lanzamiento del Service Pack de Visual Studio 2008, estas clases se han convertido en una parte integral de MFC.
version del producto | versión MFC | fecha de lanzamiento |
---|---|---|
Microsoft C/C++ 7.0 | MFC 1.0 | 1992 |
Visual C++ 1.0 | MFC 2.0 ( arquitectura de vista de documento introducida ) | |
Visual C++ 1.5 | MFC 2.5 (soporte implementado para ODBC y tecnologías de arrastrar y soltar ) | |
Visual C++ 1.52c | MFC 2.5 (última plataforma de desarrollo para MS Windows 3.x) | |
Visual C++ 2.0 | MFC 3.0 (multitarea agregada y compatibilidad con Unicode ) | |
Visual C++ 2.1 | MFC 3.1 | |
Visual C++ 2.2 | MFC 3.2 | |
Visual C++ 4.0 | MFC 4.0 (mfc40.dll incluido con Windows 95) | agosto de 1995 |
Visual C++ 4.1 | MFC 4.1 | |
Visual C++ 4.2 | MFC 4.2 (mfc42.dll incluido en la versión inicial de Windows 98) | marzo de 1998 |
Visual C++ 3.0 incorporado | MFC 4.2 (mfc42.dll) | |
Visual C++ 5.0 | MFC 4.21 (mfc42.dll), una actualización importante de MFC 4.2. | |
Visual C++ 6.0 | MFC 6.0 (mfc42.dll) | 1998 |
Embedded Visual C++ 4.0 | MFC 6.0 (mfcce400.dll) | |
Visual C++ .NET 2002 (Visual C++ 7.0) | MFC 7.0 (mfc70.dll), .NET 1.0 | febrero de 2002 |
Visual C++ .NET 2003 (Visual C++ 7.1) | MFC 7.1 (mfc71.dll), .NET 1.1 | abril de 2003 |
Visual C++ 2005 [2] (Visual C++ 8.0) | MFC 8.0 (mfc80.dll), .NET 2.0 | octubre de 2005 |
Visual C++ 2008 [2] (Visual C++ 9.0) | MFC 9.0.21022 (mfc90.dll), .NET 3.5 | noviembre de 2007 |
Visual C++ 2008 [2] con paquete de características | MFC 9.0.30411 (mfc90.dll) | abril de 2008 |
Visual C++ 2008 [2] SP1 | MFC 9.0.30729 (mfc90.dll) | agosto de 2008 |
Actualización de seguridad de Visual C++ 2008 [2] (KB971092) | MFC 9.0.30729.4148 (mfc90.dll) | julio de 2009 |
Visual C++ 2010 | MFC 10.0.30319.1 (mfc100.dll), .NET 4.0 | abril de 2010 |
Visual C++ 2010 SP1 | MFC 10.0.40219.1 (mfc100.dll), .NET 4.0 | marzo de 2011 |
Visual C++ 2010 + MS11-025 | MFC 10.0.30319.415 (mfc100.dll), .NET 4.0 | abril de 2011 |
Visual C++ 2012 (Visual C++ 11.0) | MFC 11.0.50727.1 (mfc110.dll), .NET 4.5 | 26 de julio de 2012 |
Actualización 1 de Visual C++ 2012 (Visual C++ 11.0) | MFC 11.0.51106.1 (mfc110.dll), .NET 4.5 | 5 de noviembre de 2012 |
Actualización 3 de Visual C++ 2012 (Visual C++ 11.0) | MFC 11.0.60610.1 (mfc110.dll), .NET 4.5 | 26 de julio de 2012 |
Visual C++ 2013 (Visual C++ 12.0) | MFC 12.0.21005.1 (mfc120.dll), .NET 4.5.1 | 5 de octubre de 2013 |
Actualización 2 de Visual C++ 2013 (Visual C++ 12.0) | MFC 12.0.30501.0 (mfc120.dll), .NET 4.5.1 | 30 de diciembre de 2014 |
Visual C++ 2015 (Visual C++ 14.0) | MFC 14.0.23026.0 (mfc140.dll), .NET 4.6 | 20 de julio de 2015 |
Actualización 1 de Visual C++ 2015 (Visual C++ 14.0) | MFC 14.0.23506.0 (mfc140.dll), .NET 4.6.1 | 30 de noviembre de 2015 |
Actualización 2 de Visual C++ 2015 (Visual C++ 14.0) | MFC 14.0.23918.0 (mfc140.dll) | 30 de marzo de 2016 |
Actualización 3 de Visual C++ 2015 (Visual C++ 14.0) | MFC 14.0.24210.0 (mfc140.dll) | 27 de junio de 2016 |
Visual C++ 2015 Actualización 3 + KB3165756 | MFC 14.0.24212.0 (mfc140.dll) | 2 de agosto de 2016 |
Visual C++ 2017 (Visual C++ 15.0) | MFC 14.10.25008.0 (mfc140.dll), .NET 4.6.2 | 7 de marzo de 2017 |
de elementos GUI | Juegos de herramientas (conjuntos)|||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
nivel bajo |
| ||||||||||||||||||||||||||
alto nivel |
|