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.
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 .