Biblioteca de clases de Microsoft Foundation
Microsoft Foundation Class Library (MFC) es una biblioteca orientada a objetos de C++ para desarrollar aplicaciones de escritorio para Windows.
Microsoft presentó MFC en 1992 y su uso se generalizó rápidamente. Si bien Microsoft ha introducido marcos de aplicación 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 de C++ orientado a objetos extremadamente delgado para la API de Windows. C ++ estaba comenzando 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.
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 denominó "Extensiones del marco de la aplicación" y abreviado "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 MFC como una actualización fuera de banda para Visual Studio 2008 y MFC 9 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.
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. Sin embargo, la edición Community de Visual Studio, presentada en 2014, incluye MFC.
Object Windows Library (OWL), diseñado para usarse con el compilador Turbo C++ de Borland, fue un producto de la competencia presentado por Borland casi al mismo tiempo. Eventualmente, Borland interrumpió el desarrollo de OWL y obtuvo la licencia de Microsoft para la distribución de encabezados, bibliotecas y DLL de MFC por un corto tiempo, aunque nunca ofreció soporte completamente integrado para MFC. Borland lanzó más tarde Visual Component Library para reemplazar el marco OWL.
Características
MFC es una biblioteca que envuelve partes de la API de Windows en clases de 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 presentación, MFC proporcionó macros de C++ para el manejo de mensajes de Windows (a través de mapas de mensajes), excepciones, identificación de tipos 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 al evitar el uso gratuito de tablas virtuales y también 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 provisto por C++.
Las macros para serialización, excepciones y RTTI precedieron a la disponibilidad de estas funciones en Microsoft C++ por varios años. Las versiones de 32 bits de MFC, para Windows NT 3.1 y sistemas operativos posteriores de Windows, usaban compiladores que implementaban las características del idioma y actualizaban las macros para simplemente envolver las características del idioma en lugar de proporcionar implementaciones personalizadas, logrando compatibilidad ascendente.
El editor de recursos de la cinta de opciones de MFC permite al desarrollador diseñar la cinta de forma gráfica en lugar de tener que usar 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 combinar el desarrollo de cintas de opciones gráficas y programáticas según convenga. El asistente de la aplicación MFC también se actualizó 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 clases nuevas para que las aplicaciones antiguas sigan ejecutándose. Esta actualización se basa en BCGControlBar Library Professional Edition de BCGSoft. Microsoft ha impuesto requisitos de licencia adicionales a los usuarios de las cintas. Estos incluyen un requisito para cumplir con las pautas 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.
Se puede usar MFC vinculando una biblioteca estática o agregando la 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 actualización importante 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) | 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) | 8.0.50727.4053 | 28 de julio de 2009 | ||
Visual C++ 2005 SP1 + MS11-025 (KB2467175) | 8.0.50727.5592 | 12 de abril de 2011 | ||
Visual C++ 2005 SP1 + MS11-025 (KB2538242) | 8.0.50727.6195 (incluido en redist 8.0.61000/8.0.61001) | 14 de junio de 2011 | ||
Visual C++ 2005 SP1 + MS11-025 (KB2643995) | 8.0.50727.6229 | 2021-01-25? | ||
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) | 9.0.21022.218 | 28 de julio de 2009 | ||
Visual C++ 2008 con Feature Pack | 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) | 9.0.30729.4148 | 28 de julio de 2009 | ||
Visual C++ 2008 SP1 + MS11-025 (KB2467174) | 9.0.30729.5570 | 12 de abril de 2011 | ||
Visual C++ 2008 SP1 + MS11-025 (KB2538243) | 9.0.30729.6161 (instalador tiene 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 |
Visual C++ 2010 + MS11-025 (KB2467173) | 10.0.30319.415 | 12 de abril de 2011 | ||
Visual C++ 2010 SP1 | 10.0.40219.1 | 10 de marzo de 2011 | ||
Visual C++ 2010 SP1 + MS11-025 (KB2565063) | 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 | 12 de septiembre de 2012 |
Visual C++ 2012 Update 1 | 11.0.51106.1 | 26 de noviembre de 2012 | ||
Visual C++ 2012 Update 3 | 11.0.60610,1 | 26 de junio de 2013 | ||
Visual C++ 2012 Update 4 | 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 | 17 de octubre de 2013 |
Visual C++ 2013 Update 2 | 12.0.30501.0 | 12 de mayo de 2014 | ||
Visual C++ 2013 Update 5 + KB3138367 | 12.0.40649,5 | ¿Febrero 2016? | ||
Visual C++ 2013 Update 5 + KB3179560 | 12.0.40660.0 | Julio 8, 2016 | ||
Visual C++ 2013 Update 5 + KB4032938 | 12.0.40664.0 | 18 de julio de 2017 | ||
Microsoft Visual C++ 2015 | Visual C++ 2015 (Visual C++ 14.0) | mfc140.dll | 14.0.23026.0 | 20 de julio de 2015 |
Visual C++ 2015 Update 1 | 14.0.23506.0 | 30 de noviembre de 2015 | ||
Visual C++ 2015 Update 2 | 14.0.23918.0 | Marzo 30, 2016 | ||
Visual C++ 2015 Update 3 | 14.0.24210.0 | 27 de junio de 2016 | ||
Visual C++ 2015 Update 3 | 14.0.24212,0 | Agosto 18, 2016 | ||
Visual C++ 2015 Update 3 + KB3165756 | 14.0.24215.1 | Septiembre 15, 2016 | ||
Visual C++ 2015 Update 3 | 14.0.24516.0 | 23 de octubre, 2021 | ||
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 | ¿El 5 de abril de 2017? | ||
Visual C++ 15.2 | 14.11.25325.0 | 10 de mayo de 2017 | ||
Visual C++ 15.4 | 14.12.25810.0 | Octubre 9, 2017 | ||
Visual C++ 15.6 | 14.13.26020.0 | 5 de marzo de 2018 | ||
Visual C++ 15.7 | 14.14.26405.0 | Mayo 7, 2018 | ||
Visual C++ 15.7.3? | 14.14.26429,4 | 31 de mayo de 2018 | ||
Visual C++ 15.8 | 14.15.26706.0 | Agosto 14, 2018 | ||
Visual C++ 15.9 | 14.16.27012.6 | Noviembre 13, 2018 | ||
Visual C++ 15.9.5 | 14.16.27024.1 | 8 de enero de 2019 | ||
Visual C++ 15.9.6 | 14.16.27026.1 | 24 de enero de 2019 | ||
Visual C++ 15.9 | 14.16.27027.1 | 12 de marzo de 2019 | ||
Visual C++ 15.9.15 | 14.16.27033.0 | Agosto 13, 2019 | ||
Microsoft Visual C++ 2019 | Visual C++ 16.0.0 | mfc140.dll | 14.20.27508.1 | ¿2 de abril 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 | 23 de septiembre de 2019 | ||
Visual C++ 16.4.0 | 14.24.28127,4 | Diciembre 3, 2019 | ||
Visual C++ 16.5.0 | 14.25.2858,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.0 | 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.7.8 | 14.27.29114.0 | 10 de noviembre de 2020 | ||
Visual C++ 16.8.0 | 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.0 | 14.28.29910.0 | Marzo 2, 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 | ||
Visual C++ 16.10.0 | 14.29.30037.0 | 25 de mayo de 2021 | ||
Visual C++ 16.10.2 | 14.29.30038.0 | 15 de junio de 2021 | ||
Visual C++ 16.10.4 | 14.29.30040.0 | 20 de julio de 2021 | ||
Visual C++ 16.11.0 | 14.29.30133.0 | 10 de agosto de 2021 | ||
Visual C++ 16.11.4 | 14.29.30135.0 | 5 de octubre, 2021 | ||
Visual C++ 16.11.9 | 14.29.30319,0 | 11 de enero de 2022 | ||
Microsoft Visual C++ 2022 | Visual C++ 17.0.0RC | mfc140.dll | 14.30.30704.0 | Octubre 13, 2021 |
Visual C++ 17.0.5 | 14.31.30708.0 | 14 de enero de 2022 | ||
Visual C++ 17.1.0 | 14.31.30818.0 | 27 de octubre de 2021 | ||
Visual C++ 17.1.0 | 14.31.30919,0 | 23 de diciembre de 2021 | ||
Visual C++ 17.1.0 | 14.31.31005.0 | 26 de enero de 2022 | ||
Visual C++ 17.1.0 | 14.31.31103.0 | 26 de enero de 2022 | ||
Visual C++ 17.2.0 | 14.32.31302,0 | 17 de marzo, 2022 | ||
Visual C++ 17.2.0 | 14.32.31326.0 | 9 de abril de 2022 | ||
Visual C++ 17.2.5 | 14.32.31332,0 | Julio 1, 2022 | ||
Visual C++ 17.4.0 | 14.34.31931.0 | 9 de noviembre de 2022 | ||
Visual C++ 17.4.5 | 14.34.31938.0 | Febrero 14, 2023 | ||
Visual C++ 17.6.0 | 14.36.32532,0 | 16 de mayo de 2023 |