Microsoft Foundation Classes oMFC es un conjunto declases interconectadas por múltiples relaciones deherencia, que proveen un acceso más sencillo a lasAPI de Windows. Fueron introducidas por Microsoft en 1992 y desde entonces fueron apareciendo nuevas versiones con las actualizaciones del entorno de programaciónVisual C++, gracias a las cuales éste se convierte en un generador de programasC++ paraWindows.Tiene una gran complejidad añadida debido a la necesidad de que el programador ahora no solamente debe controlar C/C++, sino que además debe conocer las clases de la MFC para poder utilizar su potencia. Con el paso del tiempo Microsoft Foundation Classes se ha convertido en la implementación estándar de la industria para la creación de aplicaciones gráficas en plataformas PC. A pesar de tener sus limitaciones, su adopción demuestra los beneficios de productividad de la reutilización de marcos comunes para desarrollar aplicaciones gráficas para negocios.
MFC se introdujo en 1992 conC de Microsoft C++ 7.0 para ser utilizado con versiones de16 bits de Windows como un sistema orientado a objetos C++ para la envoltura de la API de Windows. C++ estaba empezando a reemplazar a C para el desarrollo desoftware de aplicación comercial en el momento.C ha sido lentamente desplazado por las nuevas bibliotecas y lenguajes como son C++ y MFC, aunque muchos programadores opinan que MFC es únicamente unwrapper orientado a objetos de Windows API, ya que no disminuye mucho la complejidad y, en algunos casos, incluso la aumenta. Una interesante peculiaridad de MFC es el uso deAfx como prefijo para muchas funciones, macros y el nombre estándar de encabezado pre compiladostdafx.h. Durante el desarrollo temprano lo que se convirtió en MFC se llamaExtensiones de Application Framework se abrevia como "Afx". El nombre de Microsoft Foundation Classes (MFC), fue adoptado demasiado tarde en el ciclo de lanzamiento para cambiar estas referencias.Una alternativa a MFC es la Windows Template Library (WTL). C++ versión Express compila aplicaciones WTL, pero no incluye el soporteIDE de las ediciones Standard, Professional y Team.El 7 de abril de 2008, Microsoft lanzó una actualización de las clases MFC como una actualización fuera de banda paraVisual Studio 2008 y MFC-9. La actualización incluye nuevas construcciones de lainterfaz de usuario, incluyendo la de cinta de Microsoft Office 2007 y la asociadawidgets, barras de herramientas totalmente personalizables, paneles de conexión, como Visual Studio 2005 y las fichas de documento. Sin embargo, los elementos de la cinta se deben crear en el código, como en la API de RibbonX enMicrosoft Office 2007. El Asistente para aplicaciones MFC también ha sido actualizado para soportar las nuevas características - incluyendo una casilla para seleccionar si la aplicación va a utilizar la cinta o el Visual Studio 2005 elementos de la interfaz de usuario. La nueva funcionalidad se proporciona en las clases para que las aplicaciones antiguas todavía sigan su curso.
| Versión del producto | Versión .Net | Librería | Versión MFC | Año en el que se introdujo |
|---|---|---|---|---|
| Microsoft C/C++ 7.0 | MFC 1.0 | 1993 | ||
| Visual C++ 1.0 | MFC 2.0 | |||
| Visual C++ 1.5 | MFC 2.5 | |||
| Visual C++ 1.51 | MFC 2.51 | |||
| Visual C++ 1.52c | MFC 2.5 (Last development platform forWindows 3.x) | |||
| Visual C++ 2.0 | MFC 3.0 | |||
| Visual C++ 2.1 | MFC 3.1 | |||
| Visual C++ 2.2 | MFC 3.2 | |||
| Visual C++ 4.0 | MFC 4.0 (mfc40.dll included withWindows 95) | Agosto de 1995 | ||
| Visual C++ 4.1 | MFC 4.1 | |||
| Visual C++ 4.2 | MFC 4.2 (mfc42.dll included with theWindows 98 original release) | Marzo de 1998 | ||
| eMbedded Visual C++ 3.0 | mfc42.dll | MFC 4.2 | ||
| Visual C++ 5.0 | mfc42.dll | MFC 4.21, a major upgrade from MFC 4.2. | ||
| Visual C++ 6.0 | mfc42.dll | MFC 6.0 | 1998 | |
| eMbedded Visual C++ 4.0 | mfcce400.dll | MFC 6.0 | ||
| Visual C++ .NET 2002 (Visual C++ 7.0) | 1.0 | mfc70.dll | MFC 7.0 | Febrero de 2002 |
| Visual C++ .NET 2003 (Visual C++ 7.1) Visual C++ .NET 2003 + MS11-025[1] | 1.1 | mfc71.dll | MFC 7.1 MFC 7.10.6119.0 | Abril de 2003 Abril de 2011 |
| Visual C++ 2005 (Visual C++ 8.0) Visual C++ 2005 SP1 Visual C++ 2005 SP1 + MS09-035[2][3] Visual C++ 2005 SP1 + MS11-025[1] Visual C++ 2005 SP1 + MS11-025[4] | 2.0 | mfc80.dll | MFC 8.0.50727.42 MFC 8.0.50727.762 MFC 8.0.50727.4053 MFC 8.0.50727.5592 MFC 8.0.50727.6195 | Octubre de 2005 Junio de 2007 Julio de 2009 Abril de 2011 Junio de 2011 |
| Visual C++ 2008 (Visual C++ 9.0) Visual C++ 2008 with Feature Pack Visual C++ 2008 SP1 Visual C++ 2008 SP1 + MS09-035[2][3] Visual C++ 2008 SP1 + MS11-025[1] | 3.5 | mfc90.dll | MFC 9.0.21022.8 MFC 9.0.30411 MFC 9.0.30729.1 MFC 9.0.30729.4148 MFC 9.0.30729.5570 | Noviembre de 2007 Abril de 2008 Agosto de 2008 Julio de 2009 Abril de 2011 |
| Visual C++ 2010 (Visual C++ 10.0) Visual C++ 2010 + MS11-025[1] Visual C++ 2010 SP1 | 4.0 | mfc100.dll | MFC 10.0.30319.1 MFC 10.0.30319.415 MFC 10.0.40219.1 | Abril de 2010[5] Abril de 2011 Marzo de 2011 |
| Visual C++ 2012 (Visual C++ 11.0) Visual C++ 2012 Update 1 Visual C++ 2012 Update 3 | 4.5 | mfc110.dll | MFC 11.0.50727.1 MFC 11.0.51106.1 MFC 11.0.60610.1 | 26 de julio de 2012 5 de noviembre de 2012 26 de junio de 2013 |
| Visual C++ 2013 (Visual C++ 12.0) | 4.5.1, 4.5.2 | mfc120.dll | MFC 12.0.21005.1 | 5 de octubre de 2013 |
| Visual C++ 2015 (Visual C++ 14.0) Visual C++ 2015 Update 1 Visual C++ 2015 Update 2 Visual C++ 2015 Update 3 Visual C++ 2015 Update 3 + KB3165756 | 4.6 4.6.1 | mfc140.dll | MFC 14.0.23026.0 MFC 14.0.23506.0 MFC 14.0.23918.0 MFC 14.0.24210.0 MFC 14.0.24212.0 | 20 de julio de 2015 30 de noviembre de 2015[6] 30 de marzo de 2016[7] 27 de junio de 2016[8] 2 de agosto de 2016[9] |
| Visual C++ 2017 (Visual C++ 15.0) | 4.6.2 | mfc140.dll | MFC 14.10.25008.0 | 7 de marzo de 2017 |
MFC proporciona C++ para Windows macros de tratamiento de mensajes (a través de mapas de mensajes), las excepciones entiempo de ejecución e identificación del tipo RTTI, la serialización y la creación de instancias de clases dinámicas.Las macros para manejo de mensajes dirigidos a reducir el consumo de memoria, evitando el uso gratuito de tablas virtuales y también para proporcionar una estructura más concreta para diversos Visual C++ -suministrado herramientas para editar y manipular el código sin necesidad de analizar el lenguaje completo. Las macros de tratamiento de mensajes reemplazado el mecanismo defunción virtual proporcionada por el C++.
El Microsoft Foundation Class (MFC) de la biblioteca ofrece un ejemplo bien conocido de un software eficaz marco. El MFC es una biblioteca de clasesC++ que proporciona una interfaz para la programación de Windows y al mismo tiempo encapsula el nivel inferior de la APIWin32. Proporciona una gran cantidad de funcionalidades que se encuentran en Aplicaciones de Windows, como la gestión de documentos y la gestión de los distintospuntos de vista sobre los datos del documento, y a su vez proporciona una interfaz orientada a objetos que solucionan las complejas tareas que involucran la comunicación a través de redes, el acceso a la base de datos y gestión de documentos compuestos. Las aplicaciones de Windows se construyen mediante la especialización de los componentes que se encuentran en el marco de trabajo de MFC, como la Clases C View y C Document, para cumplir con los requisitos de la aplicación.