Библиотека классов Microsoft Foundation (MFC) — это объектно-ориентированная библиотека C++ для разработки настольных приложений для Windows .
MFC был представлен Microsoft в 1992 году и быстро получил широкое распространение. Хотя с тех пор Microsoft представила альтернативные платформы приложений, MFC по-прежнему широко используется.
MFC был представлен в 1992 году вместе с компилятором Microsoft C/C++ 7.0 для использования с 16-разрядными версиями Windows в качестве чрезвычайно тонкой объектно-ориентированной оболочки C++ для Windows API. В то время C++ только начинал заменять C при разработке коммерческого прикладного программного обеспечения. В программе MFC прямые вызовы API Windows требуются редко. Вместо этого программы создают объекты из классов Microsoft Foundation Class и вызывают функции-члены, принадлежащие этим объектам. Многие из этих функций имеют те же имена, что и соответствующие функции API. [2]
Одной из особенностей MFC является использование «Afx» в качестве префикса для многих функций, макросов и стандартного предварительно скомпилированного имени заголовка «stdafx.h». На ранних этапах разработки то, что стало MFC, называлось «Расширения платформы приложений» и сокращенно «Afx». Название Microsoft Foundation Classes (MFC) было принято слишком поздно в цикле выпуска, чтобы изменить эти ссылки.
MFC 8.0 был выпущен вместе с Visual Studio 2005 . MFC 9.0 был выпущен вместе с Visual Studio 2008. 7 апреля 2008 г. Microsoft выпустила обновление классов MFC как внешнее обновление для Visual Studio 2008 и MFC 9. [3] В этом обновлении представлены новые конструкции пользовательского интерфейса, включая ленты и связанные с ними виджеты пользовательского интерфейса , полностью настраиваемые панели инструментов , закрепляемые панели, которые можно свободно перемещать или закреплять на любой стороне, а также вкладки документов . [4]
MFC изначально был функцией коммерческих версий Visual Studio. По существу, он не включен в бесплатную версию Visual C++ Express . [5] Однако версия Visual Studio для сообщества , представленная в 2014 году, включает MFC.
Библиотека Object Windows (OWL), разработанная для использования с компилятором Borland Turbo C++ , была конкурирующим продуктом, представленным Borland примерно в то же время. В конце концов, Borland прекратила разработку OWL и на короткое время лицензировала распространение заголовков MFC, библиотек и DLL у Microsoft [6] , хотя она так и не предложила полностью интегрированную поддержку MFC. Позже Borland выпустила библиотеку визуальных компонентов , чтобы заменить платформу OWL.
MFC — это библиотека, которая объединяет части API Windows в классы C++ , включая функциональные возможности, позволяющие им использовать платформу приложений по умолчанию . Классы определены для многих объектов Windows, управляемых дескрипторами , а также для предопределенных окон и общих элементов управления.
На момент своего появления MFC предоставлял макросы C++ для обработки сообщений Windows (через карты сообщений [7] ), исключений , идентификации типа во время выполнения (RTTI), сериализации и создания динамических классов. Макросы для обработки сообщений были направлены на снижение потребления памяти за счет предотвращения необоснованного использования виртуальных таблиц , а также на предоставление более конкретной структуры для различных инструментов Visual C++ для редактирования и манипулирования кодом без полного анализа языка. Макросы обработки сообщений заменили механизм виртуальных функций , предоставляемый C++.
Макросы для сериализации, исключений и RTTI появились на несколько лет раньше, чем эти функции появились в Microsoft C++. В 32-разрядных версиях MFC для операционных систем Windows NT 3.1 и более поздних версий использовались компиляторы, реализующие функции языка, и обновлялись макросы, чтобы просто обертывать функции языка вместо предоставления индивидуальных реализаций, реализуя восходящую совместимость.
Редактор ресурсов ленты MFC позволяет разработчику проектировать ленту графически вместо использования декларативной разметки на основе XML , такой как RibbonX API . При желании компоненты ленты можно запрограммировать напрямую, вызвав новый набор методов класса ленты. Разработчик может комбинировать графическую и программную разработку ленты по своему усмотрению. Мастер приложений MFC также был обновлен для поддержки новых функций, включая флажок, позволяющий выбрать, будет ли приложение использовать ленту или закрепляемые панели. Новая функциональность предоставляется в новых классах, поэтому старые приложения продолжают работать. [4] Это обновление создано на основе библиотеки BCGControlBar Library Professional Edition от BCGSoft. [8] Microsoft ввела дополнительные лицензионные требования к пользователям лент. [9] К ним относятся требование соблюдать рекомендации Microsoft по проектированию пользовательского интерфейса, а также положение о борьбе с конкуренцией, запрещающее использование пользовательского интерфейса в приложениях, конкурирующих с Microsoft Office .
MFC можно использовать, подключив статическую библиотеку или добавив MFC DLL .