Desarrollador(es) | Microsoft |
---|---|
Lanzamiento inicial | 1992 ( 1992 ) |
Versión estable | 14.22.27821.0 / 24 de julio de 2019 [1] |
Escrito en | C++ |
Sistema operativo | Microsoft Windows |
Licencia | Propiedad |
Sitio web | docs.microsoft.com/en-us/cpp/mfc/mfc-desktop-applications |
Microsoft Foundation Class Library (MFC) es una biblioteca orientada a objetos de C++ para desarrollar aplicaciones de escritorio para Windows .
MFC fue introducido por Microsoft en 1992 y rápidamente se generalizó su uso. Si bien Microsoft ha introducido marcos de aplicaciones alternativos desde entonces, MFC sigue siendo ampliamente utilizado.
MFC se introdujo en 1992 con el compilador C/C++ 7.0 de Microsoft para su uso con versiones de 16 bits de Windows como un contenedor C++ orientado a objetos extremadamente fino para la API de Windows. En ese momento, C++ estaba empezando a reemplazar a C para el desarrollo de software de aplicaciones comerciales. En un programa MFC, rara vez se necesitan llamadas directas a la API de Windows . En cambio, los programas crean objetos a partir de clases 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 precompilado estándar "stdafx.h". Durante el desarrollo inicial, lo que se convirtió en MFC se llamó "Application Framework Extensions" y se abrevió como "Afx". El nombre Microsoft Foundation Classes (MFC) se adoptó demasiado tarde en el ciclo de lanzamiento como 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. [3] La actualización presenta nuevas construcciones de interfaz de usuario, incluidas las cintas y los widgets de IU asociados , barras de herramientas totalmente personalizables , paneles acoplables 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] Sin embargo, la edición Community de Visual Studio , presentada en 2014, incluye MFC.
Object Windows Library (OWL), diseñada para su uso con el compilador Turbo C++ de Borland , fue un producto competidor que presentó Borland en la misma época. Finalmente, Borland interrumpió el desarrollo de OWL y licenció la distribución de los encabezados, bibliotecas y DLL de MFC de Microsoft [6] durante un breve período, aunque nunca ofreció soporte totalmente integrado para MFC. Más tarde, Borland lanzó Visual Component Library para reemplazar el marco OWL.
Esta sección necesita citas adicionales para su verificación . ( Noviembre de 2011 ) |
MFC es una biblioteca que envuelve partes de la API de Windows en clases C++ , incluida la funcionalidad que les permite utilizar un marco de aplicación predeterminado . Las clases se definen para muchos de los objetos de Windows administrados por handle y también para ventanas predefinidas y controles comunes.
En el momento de su introducción, MFC proporcionaba macros de C++ para el manejo de mensajes de Windows (a través de Message Maps [7] ), excepciones , identificación de tipos en tiempo de ejecución (RTTI), serialización e instanciación dinámica de clases. Las macros para el manejo de mensajes apuntaban a reducir el consumo de memoria al evitar el uso gratuito de tablas virtuales y también a 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 precedieron 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 envolver las características del lenguaje en lugar de proporcionar implementaciones personalizadas, logrando compatibilidad ascendente.
El editor de recursos de la cinta de MFC permite al desarrollador diseñar la cinta gráficamente en lugar de tener que usar el marcado declarativo basado en XML como la API 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 cinta gráfica y programática como le resulte más conveniente. El asistente de aplicaciones de 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 acoplables. 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 un requisito de adherirse a las Pautas de diseño de interfaz de usuario de Microsoft y una cláusula anticompetitiva 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 la DLL de MFC .
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 | |
Visual C++ 3.0 integrado | mfc42.dll | MFC 4.2 | ||
Microsoft Visual C++ 5.0 | Visual C++ 5.0 | mfc42.dll | MFC 4.21 | |
Microsoft Visual C++ 6.0 | Visual C++ 6.0 | mfc42.dll | MFC 6.0 | 1998 |
Visual C++ 4.0 integrado | 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 versión redist 8.0.61000/8.0.61001 [14] ) | 14 de junio de 2011 | ||
Visual C++ 2005 SP1 + MS11-025 (KB2643995) [15] [16] | 8.0.50727.6229 | 25-01-2021? | ||
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 funciones | 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 [17] |
Visual C++ 2010 + MS11-025 (KB2467173) [10] | 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] | 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 |
Actualización 1 de Visual C++ 2012 | 11.0.51106.1 | 26 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 | 17 de octubre de 2013 |
Actualización 2 de Visual C++ 2013 | 12.0.30501.0 | 12 de mayo de 2014 | ||
Actualización 5 de Visual C++ 2013 + KB3138367 | 12.0.40649.5 | febrero de 2016? [18] [16] | ||
Actualización 5 de Visual C++ 2013 + KB3179560 | 12.0.40660.0 | 8 de julio de 2016 [19] | ||
Actualización 5 de Visual C++ 2013 + KB4032938 | 12.0.40664.0 | 18 de julio de 2017 [20] | ||
Microsoft Visual C++ 2015 | Visual C++ 2015 (Visual C++ 14.0) | mfc140.dll | 14.0.23026.0 | 20 de julio de 2015 |
Actualización 1 de Visual C++ 2015 | 14.0.23506.0 | 30 de noviembre de 2015 [21] | ||
Actualización 2 de Visual C++ 2015 | 14.0.23918.0 | 30 de marzo de 2016 [22] | ||
Actualización 3 de Visual C++ 2015 | 14.0.24210.0 | 27 de junio de 2016 [23] | ||
Actualización 3 de Visual C++ 2015 | 14.0.24212.0 | 18 de agosto de 2016 | ||
Actualización 3 de Visual C++ 2015 + KB3165756 | 14.0.24215.1 | 15 de septiembre de 2016 [24] | ||
Actualización 3 de Visual C++ 2015 | 14.0.24245.0 | 13 de noviembre de 2018 | ||
Actualización 3 de Visual C++ 2015 | 14.0.24247.2 | 13 de junio de 2023 | ||
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 | 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 | 9 de octubre de 2017 | ||
Visual C++ 15.6 | 14.13.26020.0 | 5 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 | 8 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 | ||
Visual C++ 15.9.67 | 14.16.27052.0 | 8 de octubre de 2024 | ||
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 | 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.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 [nota 1] | 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 | 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 | ||
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 de 2021 | ||
Visual C++ 16.11.9 | 14.29.30139.0 | 11 de enero de 2022 | ||
Visual C++ 16.11.32 | 14.29.30153.0 | 14 de noviembre de 2023 | ||
Visual C++ 16.11.41 | 14.29.30156.0 | 8 de octubre de 2024 | ||
Microsoft Visual C++ 2022 | Visual C++ 17.0.0RC | mfc140.dll | 14.30.30704.0 | 13 de octubre de 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 de 2022 | ||
Visual C++ 17.2.0 | 14.32.31326.0 | 9 de abril de 2022 | ||
Visual C++ 17.2.5 | 14.32.31332.0 | 1 de julio de 2022 | ||
Visual C++ 17.4.0 | 14.34.31931.0 | 9 de noviembre de 2022 | ||
Visual C++ 17.4.5 | 14.34.31938.0 | 14 de febrero de 2023 | ||
Visual C++ 17.6.0 | 14.36.32532.0 | 16 de mayo de 2023 | ||
Visual C++ 17.7.1 | 14.38.32919.0 | 11 de agosto de 2023 | ||
Visual C++ 17.8.0 | 14.38.33130.0 | 15 de noviembre de 2023 | ||
Visual C++ 17.8.6 | 14.38.33135.0 | 6 de febrero de 2024 | ||
Visual C++ 17.9.4 | 14.40.33617.1 | 19 de marzo de 2024 | ||
Visual C++ 17.9.4 | 14.40.33810.0 | 1 de mayo de 2024 | ||
Visual C++ 17.9.5 | 14.40.33816.0 | 8 de octubre de 2024 |