Введение

Microsoft Foundation Class Library (MFC) — это объектно-ориентированная библиотека C++ для разработки настольных приложений под Windows. MFC был представлен компанией Microsoft в 1992 году и быстро получил широкое распространение. Несмотря на то, что Microsoft с тех пор представила альтернативные прикладные фреймворки, MFC по-прежнему широко используется.

История

MFC был представлен в 1992 году вместе с компилятором Microsoft C/C++ 7.0 для использования с 16-битными версиями Windows как чрезвычайно тонкая объектно-ориентированная оболочка C++ для API Windows. В то время C++ только начинал вытеснять C при разработке коммерческого прикладного программного обеспечения. В программе MFC прямые вызовы API Windows редко требуются. Вместо этого программы создают объекты из классов Microsoft Foundation Class и вызывают методы-члены этих объектов. Многие из этих методов имеют те же имена, что и соответствующие функции API. Одной из особенностей 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. Это обновление включает в себя новые элементы пользовательского интерфейса, такие как ленты и связанные с ними элементы управления, полностью настраиваемые панели инструментов, панели закрепления, которые могут свободно перемещаться или закрепляться с любой стороны, и вкладки документов. Изначально MFC был функцией коммерческих версий Visual Studio. Соответственно, он не входит в состав бесплатной Visual C++ Express. Однако Community Edition Visual Studio, представленная в 2014 году, включает в себя MFC. Object Windows Library (OWL), разработанная для использования с компилятором Borland Turbo C++, была конкурирующим продуктом, представленным Borland примерно в то же время. В конечном итоге Borland прекратил разработку OWL и на короткое время лицензировал распространение заголовков, библиотек и DLL MFC от Microsoft, хотя и не предлагал полноценной интегрированной поддержки MFC. Позже Borland выпустила Visual Component Library в качестве замены фреймворку OWL.

Особенности

MFC — это библиотека, которая оборачивает части Windows API в классы C++, включая функциональность, позволяющую использовать стандартную структуру приложения. Определены классы для многих управляемых объектов Windows, а также для предопределенных окон и общих элементов управления. При появлении MFC предоставлял макросы C++ для обработки сообщений Windows (через карты сообщений), исключения, идентификацию типа во время выполнения (RTTI), сериализацию и динамическое создание экземпляров классов. Макросы для обработки сообщений были направлены на снижение потребления памяти за счет избежания избыточного использования виртуальных таблиц, а также на обеспечение более четкой структуры для различных инструментов, поставляемых с Visual C++, для редактирования и манипулирования кодом без разбора всего языка. Макросы обработки сообщений заменили механизм виртуальных функций, предоставляемый C++. Макросы для сериализации, исключений и RTTI появились за несколько лет до реализации этих функций в Microsoft C++. 32-битные версии MFC для Windows NT 3.1 и более поздних операционных систем Windows использовали компиляторы, реализующие языковые средства, и обновляли макросы, чтобы они просто оборачивали эти средства, а не предоставляли собственные реализации, обеспечивая обратную совместимость. Редактор ресурсов ленты MFC позволяет разработчику проектировать ленту графически, вместо использования декларативной разметки на основе XML, как в RibbonX API. Компоненты ленты могут быть запрограммированы напрямую с помощью нового набора методов классов ленты. Разработчик может комбинировать графическую и программную разработку ленты по своему усмотрению. Мастер приложений MFC также был обновлен для поддержки новых функций, включая флажок для выбора использования ленты или панелей закрепления в приложении. Новая функциональность реализована в новых классах, чтобы старые приложения продолжали работать. Microsoft ввела дополнительные лицензионные требования для пользователей лент, включая соблюдение рекомендаций Microsoft по разработке пользовательского интерфейса и антиконкурентное положение, запрещающее использование пользовательского интерфейса в приложениях, конкурирующих с Microsoft Office. MFC можно использовать, подключив статическую библиотеку или добавив MFC DLL.

Версии

Версия библиотекиДата выпускаНазвание Microsoft C/C++ 7.0 mafxcw. lib MFC 1.0 1992Microsoft Visual C++ 1.0 Visual C++ 1.0 mfc200. dll MFC 2.0 Визуальный C++ 1.5 mfc250. dll MFC 2.5 Визуальный C++ 1.51 mfc250. dll MFC 2.51 Визуальный C++ 1.52c mfc250. dll MFC 2.5 (Последняя платформа разработки для Windows 3. x) Microsoft Visual C++ 2.0 Visual C++ 2.0 mfc30. dll MFC 3.0 Визуальный C++ 2.1 mfc30. dll MFC 3.1 Визуальный C++ 2.2 mfc30. dll MFC 3.2Microsoft Visual C++ 4.0 Visual C++ 4.0 mfc40. dll MFC 4.0 (mfc40. dll, входящий в состав Windows 95) Август 1995 Visual C++ 4.1 mfc40. dll MFC 4.1 Визуальный C++ 4.2 mfc42. dll MFC 4.2 (mfc42. dll, включенный в оригинальный выпуск Windows 98) Март 1998 eВнедренный Visual C++ 3.0 mfc42. dll MFC 4.2Microsoft Visual C++ 5.0 Visual C++ 5.0 mfc42. dll MFC 4.21Microsoft Visual C++ 6.0 Visual C++ 6.0 mfc42. dll MFC 6.0 1998 eВнедренный Visual C++ 4.0 mfcce400. dll MFC 6.0Microsoft Visual C++ NET 2002Visual C++ NET 2002 (Visual C++ 7.0) mfc70. dllMFC 7.013 февраля 2002Microsoft Visual C++ NET 2003Visual C++ NET 2003 (Visual C++ 7.1)mfc71. dllMFC 7.124 апреля 2003Visual C++ NET 2003 + MS11 025 (KB2465373)MFC 7.10.6119.012 апреля 2011Microsoft Visual C++ 2005Visual C++ 2005 (Visual C++ 8.0)mfc80. dll8.0.50727.4210 апреля 2006Visual C++ 2005 SP18.0.50727.76227 августа 2007Visual C++ 2005 SP1 + MS09 035 (KB973544)8.0.50727.405328 июля 2009Visual C++ 2005 SP1 + MS11 025 (KB2467175)8.0.50727.6195 (включен в redist 8.0.61000/8.0.61001)14 июня 2011Visual C++ 2005 SP1 + MS11 025 (KB2643995)8.0.50727.622925 января 2021Microsoft Visual C++ 2008Visual C++ 2008 (Visual C++ 9.0) mfc90. dll9.0.21022.819 ноября 2007Visual C++ 2008 + MS09 035 (KB973551)Visual C++ 2010 + MS11 025 (KB2467173) Visual C++ 2013 Обновление 5 + KB403293812.0.40664.018 июля 2017 Microsoft Visual C++ 2015Visual C++ 2015 (Visual C++ 14.0) mfc140. dll14.0.23026.020 июля 2015Visual C++ 2015 Обновление 114.0.23506.030 ноября 2015Visual C++ 2015 Обновление 2 14.0.23918.030 марта 2016Visual C++ 2015 Обновление 314.0.24210.027 июня 2016Visual C++ 2015 Обновление 314.0.24212.018 августа 2016Visual C++ 2015 Обновление 3 + KB316575614.0.24215.115 сентября 2016Visual C++ 2015 Обновление 314.0.24516.023 октября 2021Microsoft Visual C++ 2017Visual C++ 15.0mfc140. dll14.10.25008.07 марта 2017Visual C++ 15.114.10.25017.05 апреля 2017Visual C++ 15.214.11.25325.010 мая 2017Visual C++ 15.414.12.25810.09 октября 2017Visual C++ 15.614.13.26020.05 марта 2018Visual C++ 15.714.14.26405.07 мая 2018Visual C++ 15.7.314.14.26429.431 мая 2018Visual C++ 15.814.15.26706.014 августа 2018Visual C++ 15.914.16.27012.613 ноября 2018Visual C++ 15.9.514.16.27024.18 января 2019Visual C++ 15.9.614.16.27026.124 января 2019Visual C++ 15.9.914.16.27027.112 марта 2019Visual C++ 15.9.1514.16.27033.013 августа 2019Microsoft Visual C++ 2019Visual C++ 16.0.0mfc140. dll14.20.27508.12 апреля 2019Visual C++ 16.1.014.21.27702.221 мая 2019Visual C++ 16.2.014.22.27821.024 июля 2019Visual C++ 16.3.014.23.27820.023 сентября 2019Visual C++ 16.4.014.24.28127.43 декабря 2019Visual C++ 16.5.014.25.28508.316 марта 2020Visual C++ 16.6.014.26.28720.319 мая 2020Visual C++ 16.6.314.26.28808.130 июня 2020Visual C++ 16.7.014.27.29016.05 августа 2020Visual C++ 16.7.514.27.29112.029 сентября 2020Visual C++ 16.7.814.27.29114.010 ноября 2020Последняя версия библиотеки, официально поддерживающая Windows XP. 10 ноября 2020Visual C++ 16.8.014.28.29325.210 ноября 2020Visual C++ 16.8.214.28.29334.019 ноября 2020Visual C++ 16.9.014.28.29910.02 марта 2021Visual C++ 16.9.214.28.29913.016 марта 2021Visual C++ 16.9.414.28.29914.013 апреля 2021Visual C++ 16.10.014.29.30037.025 мая 2021Visual C++ 16.10.214.29.30038.015 июня 2021Visual C++ 16.10.414.29.30040.020 июля 2021Visual C++ 16.11.014.29.30133.010 августа 2021Visual C++ 16.11.414.29.30135.05 октября 2021Visual C++ 16.11.914.29.30139.011 января 2022Visual C++ 16.11.3214.29.30153.014 ноября 2023Microsoft Visual C++ 2022Visual C++ 17.0.0RCmfc140. dll14.30.30704.013 октября 2021Visual C++ 17.0.514.31.30708.014 января 2022Visual C++ 17.1.014.31.30818.027 октября 2021Visual C++ 17.1.014.31.30919.023 декабря 2021Visual C++ 17.1.014.31.31005.026 января 2022Visual C++ 17.1.014.31.31103.026 января 2022Visual C++ 17.2.014.32.31302.017 марта 2022Visual C++ 17.2.014.32.31326.09 апреля 2022Visual C++ 17.2.514.32.31332.01 июля 2022Visual C++ 17.4.014.34.31931.09 ноября 2022Visual C++ 17.4.514.34.31938.014 февраля 2023Visual C++ 17.6.014.36.32532.016 мая 2023Visual C++ 17.7.114.38.32919.011 августа 2023Visual C++ 17.8.014.38.33130.015 ноября 2023Visual C++ 17.8.614.38.33135.06 февраля 2024Visual C++ 17.9.414.40.33617.119 марта 2024