Microsoft Foundation Class Library (MFC) es una biblioteca orientada a objetos de C ++ para desarrollar aplicaciones de escritorio para Windows .
Desarrollador (es) | Microsoft |
---|---|
Versión inicial | 1992 |
Lanzamiento estable | 14.22.27821.0 / 24 de julio de 2019 [1] |
Escrito en | C ++ |
Sistema operativo | Microsoft Windows |
Licencia | Propiedad |
Sitio web | docs |
MFC fue introducido por Microsoft en 1992 y rápidamente ganó un uso generalizado. Si bien Microsoft ha introducido marcos de aplicaciones alternativos desde entonces, MFC sigue siendo ampliamente utilizado.
Historia
MFC se introdujo en 1992 con el compilador C / C ++ 7.0 de Microsoft para su uso con versiones de Windows de 16 bits como un contenedor C ++ orientado a objetos extremadamente delgado para la API de Windows. C ++ recién comenzaba a reemplazar a C para el desarrollo de software de aplicaciones comerciales en ese momento. En un programa MFC, rara vez se necesitan llamadas directas a la API de Windows . En su lugar, los programas crean objetos a partir de clases de Microsoft Foundation Class y llaman a funciones miembro que pertenecen a esos objetos. Muchas de esas funciones comparten sus nombres con las funciones API correspondientes. [2]
Una peculiaridad de MFC es el uso de "Afx" como prefijo para muchas funciones, macros y el nombre de encabezado estándar precompilado "stdafx.h". Durante el desarrollo inicial, lo que se convirtió en MFC se llamó "Extensiones de marco de aplicación" y se abrevió "Afx". El nombre Microsoft Foundation Classes (MFC) se adoptó demasiado tarde en el ciclo de lanzamiento para cambiar estas referencias.
MFC 8.0 se lanzó con Visual Studio 2005 . MFC 9.0 se lanzó con Visual Studio 2008. El 7 de abril de 2008, Microsoft lanzó una actualización de las clases de MFC como una actualización fuera de banda de Visual Studio 2008 y MFC 9. [3] La actualización presenta nuevas construcciones de interfaz de usuario, incluidas las cintas y los widgets de interfaz de usuario asociados , barras de herramientas totalmente personalizables , paneles de acoplamiento que pueden flotar libremente o acoplarse a cualquier lado y pestañas de documentos . [4]
MFC fue inicialmente una característica de las versiones comerciales de Visual Studio. Como tal, no está incluido en el software gratuito Visual C ++ Express . [5] La edición Comunidad de Visual Studio , introducida en 2014, sin embargo, incluye MFC.
Object Windows Library (OWL), diseñada para su uso con el compilador Turbo C ++ de Borland , fue un producto competidor introducido por Borland casi al mismo tiempo. Finalmente, Borland interrumpió el desarrollo de OWL y obtuvo la licencia de distribución de los encabezados, bibliotecas y DLL de MFC de Microsoft [6] durante un breve período de tiempo, aunque nunca ofreció soporte totalmente integrado para MFC. Más tarde, Borland lanzó Visual Component Library para reemplazar el marco OWL.
Características
MFC es una biblioteca que incluye partes de la API de Windows en clases C ++ , incluida la funcionalidad que les permite usar un marco de aplicación predeterminado . Las clases se definen para muchos de los objetos de Windows administrados por identificadores y también para ventanas predefinidas y controles comunes.
En el momento de su introducción, MFC proporcionó macros C ++ para el manejo de mensajes de Windows (a través de Mapas de mensajes [7] ), excepciones , identificación de tipo en tiempo de ejecución (RTTI), serialización e instanciación de clases dinámicas. Las macros para el manejo de mensajes tenían como objetivo reducir el consumo de memoria evitando el uso gratuito de tablas virtuales y también para proporcionar una estructura más concreta para varias herramientas proporcionadas por Visual C ++ para editar y manipular código sin analizar el lenguaje completo. Las macros de manejo de mensajes reemplazaron el mecanismo de función virtual proporcionado por C ++.
Las macros para serialización, excepciones y RTTI fueron anteriores a la disponibilidad de estas características en Microsoft C ++ por varios años. Las versiones de 32 bits de MFC, para Windows NT 3.1 y sistemas operativos Windows posteriores, usaban compiladores que implementaban las características del lenguaje y actualizaban las macros para simplemente ajustar las características del idioma en lugar de proporcionar implementaciones personalizadas, obteniendo compatibilidad ascendente.
El editor de recursos de cinta de MFC permite al desarrollador diseñar la cinta de forma gráfica en lugar de tener que utilizar el marcado declarativo basado en XML como la API de RibbonX . Opcionalmente, los componentes de la cinta se pueden programar directamente llamando a un nuevo conjunto de métodos de clase de cinta. El desarrollador puede mezclar el desarrollo de cintas gráficas y programáticas según sea conveniente. El asistente de la aplicación MFC también se ha actualizado para admitir las nuevas funciones, incluida una casilla de verificación para seleccionar si la aplicación utilizará la cinta o los paneles de acoplamiento. La nueva funcionalidad se proporciona en nuevas clases para que las aplicaciones antiguas sigan ejecutándose. [4] Esta actualización se basa en la BCGControlBar Library Professional Edition de BCGSoft . [8] Microsoft ha impuesto requisitos de licencia adicionales a los usuarios de las cintas. [9] Estos incluyen el requisito de adherirse a las Directrices de diseño de la interfaz de usuario de Microsoft y una cláusula contra la competencia que prohíbe el uso de la interfaz de usuario en aplicaciones que compiten con Microsoft Office .
MFC se puede utilizar vinculando una biblioteca estática o agregando el archivo DLL de MFC .
Versiones
Producto | Biblioteca | Versión | Fecha de lanzamiento | |
---|---|---|---|---|
Nombre | Versión | |||
Microsoft C / C ++ 7.0 | mafxcw.lib | MFC 1.0 | 1992 | |
Microsoft Visual C ++ 1.0 | Visual C ++ 1.0 | mfc200.dll | MFC 2.0 | |
Visual C ++ 1.5 | mfc250.dll | MFC 2.5 | ||
Visual C ++ 1.51 | mfc250.dll | MFC 2.51 | ||
Visual C ++ 1.52c | mfc250.dll | MFC 2.5 (última plataforma de desarrollo para Windows 3.x ) | ||
Microsoft Visual C ++ 2.0 | Visual C ++ 2.0 | mfc30.dll | MFC 3.0 | |
Visual C ++ 2.1 | mfc30.dll | MFC 3.1 | ||
Visual C ++ 2.2 | mfc30.dll | MFC 3.2 | ||
Microsoft Visual C ++ 4.0 | Visual C ++ 4.0 | mfc40.dll | MFC 4.0 (mfc40.dll incluido con Windows 95 ) | Agosto de 1995 |
Visual C ++ 4.1 | mfc40.dll | MFC 4.1 | ||
Visual C ++ 4.2 | mfc42.dll | MFC 4.2 (mfc42.dll incluido con la versión original de Windows 98 ) | Marzo de 1998 | |
eMbedded Visual C ++ 3.0 | mfc42.dll | MFC 4.2 | ||
Microsoft Visual C ++ 5.0 | Visual C ++ 5.0 | mfc42.dll | MFC 4.21, una importante actualización de MFC 4.2. | |
Microsoft Visual C ++ 6.0 | Visual C ++ 6.0 | mfc42.dll | MFC 6.0 | 1998 |
eMbedded Visual C ++ 4.0 | mfcce400.dll | MFC 6.0 | ||
Microsoft Visual C ++ .NET 2002 | Visual C ++ .NET 2002 (Visual C ++ 7.0) | mfc70.dll | MFC 7.0 | 13 de febrero de 2002 |
Microsoft Visual C ++ .NET 2003 | Visual C ++ .NET 2003 (Visual C ++ 7.1) | mfc71.dll | MFC 7.1 | 24 de abril de 2003 |
Visual C ++ .NET 2003 + MS11-025 (KB2465373) [10] | MFC 7.10.6119.0 | 12 de abril de 2011 | ||
Microsoft Visual C ++ 2005 | Visual C ++ 2005 (Visual C ++ 8.0) | mfc80.dll | 8.0.50727.42 | 10 de abril de 2006 |
Visual C ++ 2005 SP1 | 8.0.50727.762 | 27 de agosto de 2007 | ||
Visual C ++ 2005 SP1 + MS09-035 (KB973544) [11] [12] | 8.0.50727.4053 | 28 de julio de 2009 | ||
Visual C ++ 2005 SP1 + MS11-025 (KB2467175) [10] | 8.0.50727.5592 | 12 de abril de 2011 | ||
Visual C ++ 2005 SP1 + MS11-025 (KB2538242) [10] [13] | 8.0.50727.6195 (incluido en la lista nueva 8.0.61000 / 8.0.61001 [14] ) | 14 de junio de 2011 | ||
Microsoft Visual C ++ 2008 | Visual C ++ 2008 (Visual C ++ 9.0) | mfc90.dll | 9.0.21022.8 | 19 de noviembre de 2007 |
Visual C ++ 2008 + MS09-035 (KB973551) [11] [12] | 9.0.21022.218 | 28 de julio de 2009 | ||
Visual C ++ 2008 con paquete de características | 9.0.30411 | 22 de abril de 2008 | ||
Visual C ++ 2008 SP1 | 9.0.30729.1 | 11 de agosto de 2008 | ||
Visual C ++ 2008 SP1 + MS09-035 (KB973552) [11] [12] | 9.0.30729.4148 | 28 de julio de 2009 | ||
Visual C ++ 2008 SP1 + MS11-025 (KB2467174) [10] | 9.0.30729.5570 | 12 de abril de 2011 | ||
Visual C ++ 2008 SP1 + MS11-025 (KB2538243) [10] | 9.0.30729.6161 (el instalador tiene la versión 9.0.30729.5677) | 14 de junio de 2011 | ||
Microsoft Visual C ++ 2010 | Visual C ++ 2010 (Visual C ++ 10.0) | mfc100.dll | 10.0.30319.1 | 12 de abril de 2010 [15] |
Visual C ++ 2010 + MS11-025 (KB2467173) [10] | 10.0.30319.415 | 12 de abril de 2011 | ||
Visual C ++ 2010 SP1 | 10.0.40219.1 | 11 de marzo de 2011 | ||
Visual C ++ 2010 SP1 + MS11-025 (KB2565063) [10] | 10.0.40219.325 | 9 de agosto de 2011 | ||
Microsoft Visual C ++ 2012 | Visual C ++ 2012 (Visual C ++ 11.0) | mfc110.dll | 11.0.50727.1 | 26 de julio de 2012 |
Actualización 1 de Visual C ++ 2012 | 11.0.51106.1 | 5 de noviembre de 2012 | ||
Actualización 3 de Visual C ++ 2012 | 11.0.60610.1 | 26 de junio de 2013 | ||
Actualización 4 de Visual C ++ 2012 | 11.0.61030.0 | 13 de noviembre de 2013 | ||
Microsoft Visual C ++ 2013 | Visual C ++ 2013 (Visual C ++ 12.0) | mfc120.dll | 12.0.21005.1 | 5 de octubre de 2013 |
Visual C ++ 2013 Actualización 2 | 12.0.30501.0 | 30 de diciembre de 2014 [16] | ||
Visual C ++ 2013 Actualización 5 + KB3138367 | 12.0.40649.5 | Febrero de 2016? | ||
Visual C ++ 2013 Actualización 5 + KB3179560 | 12.0.40660.0 | 8 de julio de 2016 [17] | ||
Visual C ++ 2013 Actualización 5 + KB4032938 | 12.0.40664.0 | 18 de julio de 2017 [18] | ||
Microsoft Visual C ++ 2015 | Visual C ++ 2015 (Visual C ++ 14.0) | mfc140.dll | 14.0.23026.0 | 20 de julio 2015 |
Actualización 1 de Visual C ++ 2015 | 14.0.23506.0 | 30 de noviembre de 2015 [19] | ||
Actualización 2 de Visual C ++ 2015 | 14.0.23918.0 | 30 de marzo de 2016 [20] | ||
Visual C ++ 2015 Actualización 3 | 14.0.24210.0 | 27 de junio de 2016 [21] | ||
Visual C ++ 2015 Actualización 3 | 14.0.24212.0 | 18 de agosto de 2016 | ||
Visual C ++ 2015 Actualización 3 + KB3165756 | 14.0.24215.1 | 15 de septiembre de 2016 [22] | ||
Microsoft Visual C ++ 2017 | Visual C ++ 15.0 | mfc140.dll | 14.10.25008.0 | 7 de marzo de 2017 |
Visual C ++ 15.1? | 14.10.25017.0 | Abril de 2017? | ||
Visual C ++ 15.2 | 14.11.25325.0 | 10 de mayo de 2017 | ||
Visual C ++ 15.4 | 14.12.25810.0 | 10 de octubre de 2017 | ||
Visual C ++ 15.6 | 14.13.26020.0 | 6 de marzo de 2018 | ||
Visual C ++ 15.7 | 14.14.26405.0 | 7 de mayo de 2018 | ||
Visual C ++ 15.7.3? | 14.14.26429.4 | 31 de mayo de 2018 | ||
Visual C ++ 15.8 | 14.15.26706.0 | 14 de agosto de 2018 | ||
Visual C ++ 15.9 | 14.16.27012.6 | 13 de noviembre de 2018 | ||
Visual C ++ 15.9.5 | 14.16.27024.1 | 10 de enero de 2019 | ||
Visual C ++ 15.9.6 | 14.16.27026.1 | 24 de enero de 2019 | ||
Visual C ++ 15.9.9 | 14.16.27027.1 | 12 de marzo de 2019 | ||
Visual C ++ 15.9.15 | 14.16.27033.0 | 13 de agosto de 2019 | ||
Microsoft Visual C ++ 2019 | Visual C ++ 16.0 | mfc140.dll | 14.20.27508.1 | 19 de marzo de 2019? |
Visual C ++ 16.1.0 | 14.21.27702.2 | 21 de mayo de 2019 | ||
Visual C ++ 16.2.0 | 14.22.27821.0 | 24 de julio de 2019 | ||
Visual C ++ 16.3.0 | 14.23.27820.0 | 9 de septiembre de 2019 | ||
Visual C ++ 16.4.0 | 14.24.28127.4 | 3 de diciembre de 2019 | ||
Visual C ++ 16.5.0 | 14.25.28508.3 | 16 de marzo de 2020 | ||
Visual C ++ 16.6.0 | 14.26.28720.3 | 19 de mayo de 2020 | ||
Visual C ++ 16.6.3 | 14.26.28808.1 | 30 de junio de 2020 | ||
Visual C ++ 16.7 | 14.27.29016.0 | 5 de agosto de 2020 | ||
Visual C ++ 16.7.5 | 14.27.29112.0 | 29 de septiembre de 2020 | ||
Visual C ++ 16.8 | 14.28.29325.2 | 10 de noviembre de 2020 | ||
Visual C ++ 16.8.2 | 14.28.29334.0 | 19 de noviembre de 2020 | ||
Visual C ++ 16.9 | 14.28.29910.0 | 2 de marzo de 2021 | ||
Visual C ++ 16.9.2 | 14.28.29913.0 | 16 de marzo de 2021 | ||
Visual C ++ 16.9.4 | 14.28.29914.0 | 13 de abril de 2021 |
Ver también
- Biblioteca de plantillas activas (ATL)
- JUCE
- Qt
- Biblioteca de plantillas estándar (STL)
- Biblioteca de plantillas de Windows (WTL)
- WxWidgets
Referencias
- ^ "Notas de la versión de Visual Studio 2019" . Msdn.microsoft.com . Consultado el 24 de julio de 2019 .
- ^ Descripción general de Visual C ++ Express
- ^ "Paquete de características de Visual C ++ 2008 enviado" . Blogs.msdn.com . Consultado el 26 de abril de 2008 .
- ^ a b "Visita rápida de la nueva funcionalidad de MFC" . Blogs.msdn.com . Consultado el 10 de septiembre de 2019 .
- ^ "Preguntas frecuentes sobre Visual Studio Express Edition" . Microsoft.com. Archivado desde el original el 11 de junio de 2011 . Consultado el 6 de enero de 2012 .
- ^ "Microsoft compra en Inprise, resuelve disputas" . Techweb.com. Archivado desde el original el 17 de octubre de 2007 . Consultado el 6 de enero de 2012 .
- ^ Williams, Mickey; David Bennett. "Creación de sus propios mapas de mensajes" . Informarle.
- ^ "Actualización de MFC impulsada por BCGSoft" . Msdn2.microsoft.com . Consultado el 16 de noviembre de 2007 .
- ^ "Página de descarga de la versión de Visual C ++ 2008 Feature Pack" . Microsoft.com . Consultado el 16 de mayo de 2008 .
- ^ a b c d e f g "MS11-025: una vulnerabilidad en la biblioteca de Microsoft Foundation Class (MFC) podría permitir la ejecución remota de código: 12 de abril de 2011" . Microsoft.com . Consultado el 10 de junio de 2019 .
- ^ a b c "Boletín de seguridad de Microsoft MS09-035 - Moderado: vulnerabilidades en la biblioteca de plantillas activas de Visual Studio podrían permitir la ejecución remota de código (969706)" . Microsoft.com . Consultado el 19 de noviembre de 2012 .
- ^ a b c "Proteja su computadora de la vulnerabilidad de seguridad de Active Template Library (ATL)" . Archivado desde el original el 26 de octubre de 2010 . Consultado el 29 de octubre de 2010 .
- ^ "Actualización de seguridad de Microsoft Visual Studio 2005 Service Pack 1 MFC" . Microsoft.com . Consultado el 19 de noviembre de 2012 .
- ^ "¿Dónde puedo descargar Visual C ++ Redistributables?" . Consultado el 10 de junio de 2019 .
- ^ "Visual C ++: exploración de nuevas funciones de C ++ y MFC en Visual Studio 2010" . Msdn.microsoft.com . Consultado el 19 de noviembre de 2012 .
- ^ "Paquetes redistribuibles de Visual C ++ para Visual Studio 2013" . Msdn.microsoft.com . Consultado el 30 de diciembre de 2014 .
- ^ "Actualización para Visual C ++ 2013 y Visual C ++ Redistributable Package" . Msdn.microsoft.com . Consultado el 8 de enero de 2017 .
- ^ "Actualización para el paquete redistribuible de Visual C ++ 2013" . Consultado el 10 de junio de 2019 .
- ^ "Visual Studio 2015 Update 1" . Msdn.microsoft.com . Consultado el 12 de junio de 2016 .
- ^ "Visual Studio 2015 Update 2" . Msdn.microsoft.com . Consultado el 12 de junio de 2016 .
- ^ "Visual Studio 2015 Update 3" . Msdn.microsoft.com . Consultado el 28 de junio de 2016 .
- ^ "Microsoft Visual Studio 2015 Update 3 (KB3165756)" . Msdn.microsoft.com . Consultado el 28 de agosto de 2016 .
Otras lecturas
- Prosise, Jeff (1999). Programación de Windows con MFC (2 ed.). Microsoft Press . ISBN 9781572316959.
- Pastor, George (1996). MFC Internals (7 ed.). Addison-Wesley . ISBN 9780201407211.
- Kruglinski, David (1997). Dentro de Visual C ++ (4 ed.). Microsoft Press . ISBN 9781572315655.
- Microsoft (1995). Microsoft Visual C ++: Programación con MFC (2 ed.). Microsoft Press . ISBN 9781556159213.
enlaces externos
- Las últimas descargas de Visual C ++ compatibles - Microsoft
- ¿Dónde puedo descargar Visual C ++ Redistributables? - Microsoft
- Referencia de MSDN MFC - Microsoft
- MFC: Visual Studio 2005 y posteriores - Microsoft
- Una mirada al interior de la próxima generación de Visual C ++ (cubre las principales actualizaciones de MFC 9) - Microsoft