Разработчик(и) | Майкрософт |
---|---|
Первоначальный выпуск | 1992 ( 1992 ) |
Стабильный релиз | 14.22.27821.0 / 24 июля 2019 г. [1] |
Написано в | С++ |
Операционная система | Майкрософт Виндоус |
Лицензия | Запатентованный |
Веб-сайт | docs.microsoft.com/en-us/cpp/mfc/mfc-desktop-applications |
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. [2]
Одной из особенностей MFC является использование "Afx" в качестве префикса для многих функций, макросов и стандартного имени предварительно скомпилированного заголовка "stdafx.h". На ранних этапах разработки то, что стало MFC, называлось "Application Framework Extensions" и сокращалось до "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] Однако Community edition Visual Studio , представленная в 2014 году, включает MFC.
Object Windows Library (OWL), разработанная для использования с компилятором Borland Turbo C++ , была конкурирующим продуктом, представленным Borland примерно в то же время. В конце концов, Borland прекратила разработку OWL и лицензировала распространение заголовков, библиотек и DLL MFC от Microsoft [6] на короткое время, хотя она никогда не предлагала полностью интегрированную поддержку MFC. Позднее Borland выпустила Visual Component Library для замены фреймворка OWL.
Этот раздел нуждается в дополнительных цитатах для проверки . ( Ноябрь 2011 ) |
MFC — это библиотека, которая оборачивает части Windows API в классы C++ , включая функциональность, которая позволяет им использовать фреймворк приложения по умолчанию . Классы определены для многих управляемых дескриптором объектов Windows, а также для предопределенных окон и общих элементов управления.
На момент своего появления MFC предоставлял макросы C++ для обработки сообщений Windows (через Message Maps [7] ), исключений , идентификации типов во время выполнения (RTTI), сериализации и создания динамических экземпляров классов. Макросы для обработки сообщений были направлены на сокращение потребления памяти путем избежания ненужного использования виртуальных таблиц , а также на предоставление более конкретной структуры для различных инструментов Visual C++ для редактирования и манипулирования кодом без разбора всего языка. Макросы обработки сообщений заменили механизм виртуальных функций, предоставляемый C++.
Макросы для сериализации, исключений и RTTI появились на несколько лет раньше, чем эти функции в Microsoft C++. 32-разрядные версии MFC для Windows NT 3.1 и более поздних операционных систем Windows использовали компиляторы, которые реализовали функции языка и обновили макросы, чтобы просто обернуть функции языка вместо предоставления настраиваемых реализаций, что обеспечило восходящую совместимость.
Редактор ресурсов ленты MFC позволяет разработчику проектировать ленту графически, вместо того чтобы использовать декларативную разметку на основе XML, такую как RibbonX API . При желании компоненты ленты можно программировать напрямую, вызывая новый набор методов класса ленты. Разработчик может смешивать графическую и программную разработку ленты по своему усмотрению. Мастер приложений MFC также был обновлен для поддержки новых функций, включая флажок для выбора того, будет ли приложение использовать ленту или панели стыковки. Новые функции предоставляются в новых классах, так что старые приложения по-прежнему будут работать. [4] Это обновление основано на BCGSoft's BCGControlBar Library Professional Edition. [8] Microsoft ввела дополнительные лицензионные требования для пользователей лент. [9] К ним относятся требование соблюдать Microsoft UI Design Guidelines и антиконкурентный пункт, запрещающий использование UI в приложениях, которые конкурируют с Microsoft Office .
MFC можно использовать, подключив статическую библиотеку или добавив MFC DLL .
Продукт | Библиотека | Версия | Дата выпуска | |
---|---|---|---|---|
Имя | Версия | |||
Microsoft C/C++ 7.0 | mafxcw.lib | МФЦ 1.0 | 1992 | |
Microsoft Visual C++ 1.0 | Visual C++ 1.0 | mfc200.dll | МФЦ 2.0 | |
Visual C++ 1.5 | mfc250.dll | МФЦ 2.5 | ||
Visual C++ 1.51 | mfc250.dll | МФК 2.51 | ||
Visual C++ 1.52c | mfc250.dll | MFC 2.5 (Последняя платформа разработки для Windows 3.x ) | ||
Microsoft Visual C++ 2.0 | Visual C++ 2.0 | mfc30.dll | МФЦ 3.0 | |
Visual C++ 2.1 | mfc30.dll | МФЦ 3.1 | ||
Visual C++ 2.2 | mfc30.dll | МФЦ 3.2 | ||
Microsoft Visual C++ 4.0 | Visual C++ 4.0 | mfc40.dll | MFC 4.0 (mfc40.dll входит в состав Windows 95 ) | Август 1995 г. |
Visual C++ 4.1 | mfc40.dll | МФЦ 4.1 | ||
Visual C++ 4.2 | mfc42.dll | MFC 4.2 (mfc42.dll входит в состав оригинальной версии Windows 98 ) | Март 1998 г. | |
Встроенный Visual C++ 3.0 | mfc42.dll | МФЦ 4.2 | ||
Microsoft Visual C++ 5.0 | Visual C++ 5.0 | mfc42.dll | МФЦ 4.21 | |
Microsoft Visual C++ 6.0 | Visual C++ 6.0 | mfc42.dll | МФЦ 6.0 | 1998 |
Встроенный Visual C++ 4.0 | mfcce400.dll | МФЦ 6.0 | ||
Microsoft Visual C++ .NET 2002 | Visual C++ .NET 2002 (Visual C++ 7.0) | mfc70.dll | 7.0.9466.0 | 13 февраля 2002 г. |
Visual C++ .NET 2002 + MS07-012 (KB924641) | 7.0.9801.0 | 27 февраля 2008 г. | ||
Visual C++ .NET 2002 SP1 | 7.0.9955.0 | 08 марта 2005 г. | ||
Visual C++ .NET 2002 SP1 + MS07-012 (KB924642) | 7.0.9975.0 | 27 февраля 2008 г. | ||
Microsoft Visual C++ .NET 2003 | Visual C++ .NET 2003 (Visual C++ 7.1) | mfc71.dll | 7.10.3077.0 | 24 апреля 2003 г. |
Visual C++ .NET 2003 + MS07-012 (KB924643) | 7.10.5057.0 | 27 февраля 2008 г. | ||
Visual C++ .NET 2003 SP1 | 7.10.6030.0 | 15 августа 2006 г. | ||
Visual C++ .NET 2003 SP1 + MS07-012 (KB927696) | 7.10.6041.0 | 27 февраля 2008 г. | ||
Visual C++ .NET 2003 SP1 + MS11-025 (KB2465373) [10] | 7.10.6119.0 | 12 апреля 2011 г. | ||
Microsoft Visual C++ 2005 | Visual C++ 2005 (Visual C++ 8.0) | mfc80.dll | 8.0.50727.42 | 10 апреля 2006 г. |
Visual C++ 2005 SP1 | 8.0.50727.762 | 27 августа 2007 г. | ||
Visual C++ 2005 SP1 + MS09-035 (KB973544) [11] [12] | 8.0.50727.4053 | 28 июля 2009 г. | ||
Visual C++ 2005 SP1 + MS11-025 (KB2467175) [10] | 8.0.50727.5592 | 12 апреля 2011 г. | ||
Visual C++ 2005 SP1 + MS11-025 (KB2538242) [10] [13] | 8.0.50727.6195 (включено в redist 8.0.61000/8.0.61001 [14] ) | 14 июня 2011 г. | ||
Visual C++ 2005 SP1 + MS11-025 (KB2643995) [15] [16] | 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 ноября 2007 г. |
Visual C++ 2008 + MS09-035 (KB973551) [11] [12] | 9.0.21022.218 | 28 июля 2009 г. | ||
Visual C++ 2008 с пакетом функций | 9.0.30411 | 22 апреля 2008 г. | ||
Visual C++ 2008 SP1 | 9.0.30729.1 | 11 августа 2008 г. | ||
Visual C++ 2008 SP1 + MS09-035 (KB973552) [11] [12] | 9.0.30729.4148 | 28 июля 2009 г. | ||
Visual C++ 2008 SP1 + MS11-025 (KB2467174) [10] | 9.0.30729.5570 | 12 апреля 2011 г. | ||
Visual C++ 2008 SP1 + MS11-025 (KB2538243) [10] | 9.0.30729.6161 (установщик имеет версию 9.0.30729.5677) | 14 июня 2011 г. | ||
Microsoft Visual C++ 2010 | Visual C++ 2010 (Visual C++ 10.0) | mfc100.dll | 10.0.30319.1 | 12 апреля 2010 г. [17] |
Visual C++ 2010 + MS11-025 (KB2467173) [10] | 10.0.30319.415 | 12 апреля 2011 г. | ||
Visual C++ 2010 SP1 | 10.0.40219.1 | 10 марта 2011 г. | ||
Visual C++ 2010 SP1 + MS11-025 (KB2565063) [10] | 10.0.40219.325 | 9 августа 2011 г. | ||
Microsoft Visual C++ 2012 | Visual C++ 2012 (Visual C++ 11.0) | mfc110.dll | 11.0.50727.1 | 12 сентября 2012 г. |
Visual C++ 2012 Обновление 1 | 11.0.51106.1 | 26 ноября 2012 г. | ||
Visual C++ 2012 Обновление 3 | 11.0.60610.1 | 26 июня 2013 г. | ||
Visual C++ 2012 Обновление 4 | 11.0.61030.0 | 13 ноября 2013 г. | ||
Microsoft Visual C++ 2013 | Visual C++ 2013 (Visual C++ 12.0) | mfc120.dll | 12.0.21005.1 | 17 октября 2013 г. |
Visual C++ 2013 Обновление 2 | 12.0.30501.0 | 12 мая 2014 г. | ||
Visual C++ 2013 Обновление 5 + KB3138367 | 12.0.40649.5 | Февраль 2016? [18] [16] | ||
Visual C++ 2013 Обновление 5 + KB3179560 | 12.0.40660.0 | Июль 2016? [19] | ||
Visual C++ 2013 Обновление 5 + KB4032938 | 12.0.40664.0 | 18 июля 2017 г. [20] | ||
Microsoft Visual C++ 2015 | Visual C++ 2015 (Visual C++ 14.0) | mfc140.dll | 14.0.23026.0 | 20 июля 2015 г. |
Visual C++ 2015 Обновление 1 | 14.0.23506.0 | 30 ноября 2015 г. [21] | ||
Visual C++ 2015 Обновление 2 | 14.0.23918.0 | 30 марта 2016 г. [22] | ||
Visual C++ 2015 Обновление 3 | 14.0.24210.0 | 27 июня 2016 г. [23] | ||
Visual C++ 2015 Обновление 3 | 14.0.24212.0 | 18 августа 2016 г. | ||
Visual C++ 2015 Обновление 3 + KB3165756 | 14.0.24215.1 | 14 сентября 2016 г. [24] | ||
Visual C++ 2015 Обновление 3 | 14.0.24245.0 | 13 ноября 2018 г. | ||
Visual C++ 2015 Обновление 3 | 14.0.24247.2 | 13 июня 2023 г. | ||
Microsoft Visual C++ 2017 | Visual C++ 15.0 | mfc140.dll | 14.10.25008.0 | 7 марта 2017 г. |
Visual C++ 15.1? | 14.10.25017.0 | 5 апреля 2017 года? | ||
Visual C++ 15.2 | 14.11.25325.0 | 10 мая 2017 г. | ||
Visual C++ 15.4 | 14.12.25810.0 | 9 октября 2017 г. | ||
Visual C++ 15.6 | 14.13.26020.0 | 5 марта 2018 г. | ||
Visual C++ 15.7 | 14.14.26405.0 | 7 мая 2018 г. | ||
Visual C++ 15.7.3? | 14.14.26429.4 | 31 мая 2018 г. | ||
Visual C++ 15.8 | 14.15.26706.0 | 14 августа 2018 г. | ||
Visual C++ 15.9 | 14.16.27012.6 | 13 ноября 2018 г. | ||
Visual C++ 15.9.5 | 14.16.27024.1 | 8 января 2019 г. | ||
Visual C++ 15.9.6 | 14.16.27026.1 | 24 января 2019 г. | ||
Visual C++ 15.9.9 | 14.16.27027.1 | 12 марта 2019 г. | ||
Visual C++ 15.9.15 | 14.16.27033.0 | 13 августа 2019 г. | ||
Visual C++ 15.9.67 | 14.16.27052.0 | 8 октября 2024 г. | ||
Microsoft Visual C++ 2019 | Visual C++ 16.0.0 | mfc140.dll | 14.20.27508.1 | 2 апреля 2019 года? |
Visual C++ 16.1.0 | 14.21.27702.2 | 21 мая 2019 г. | ||
Visual C++ 16.2.0 | 14.22.27821.0 | 24 июля 2019 г. | ||
Visual C++ 16.3.0 | 14.23.27820.0 | 23 сентября 2019 г. | ||
Visual C++ 16.4.0 | 14.24.28127.4 | 3 декабря 2019 г. | ||
Visual C++ 16.5.0 | 14.25.28508.3 | 16 марта 2020 г. | ||
Visual C++ 16.6.0 | 14.26.28720.3 | 19 мая 2020 г. | ||
Visual C++ 16.6.3 | 14.26.28808.1 | 30 июня 2020 г. | ||
Visual C++ 16.7.0 | 14.27.29016.0 | 5 августа 2020 г. | ||
Visual C++ 16.7.5 | 14.27.29112.0 | 29 сентября 2020 г. | ||
Visual C++ 16.7.8 | 14.27.29114.0 [примечание 1] | 10 ноября 2020 г. | ||
Visual C++ 16.8.0 | 14.28.29325.2 | 10 ноября 2020 г. | ||
Visual C++ 16.8.2 | 14.28.29334.0 | 19 ноября 2020 г. | ||
Visual C++ 16.9.0 | 14.28.29910.0 | 2 марта 2021 г. | ||
Visual C++ 16.9.2 | 14.28.29913.0 | 16 марта 2021 г. | ||
Visual C++ 16.9.4 | 14.28.29914.0 | 13 апреля 2021 г. | ||
Visual C++ 16.10.0 | 14.29.30037.0 | 25 мая 2021 г. | ||
Visual C++ 16.10.2 | 14.29.30038.0 | 15 июня 2021 г. | ||
Visual C++ 16.10.4 | 14.29.30040.0 | 20 июля 2021 г. | ||
Visual C++ 16.11.0 | 14.29.30133.0 | 10 августа 2021 г. | ||
Visual C++ 16.11.4 | 14.29.30135.0 | 5 октября 2021 г. | ||
Visual C++ 16.11.9 | 14.29.30139.0 | 11 января 2022 г. | ||
Visual C++ 16.11.32 | 14.29.30153.0 | 14 ноября 2023 г. | ||
Visual C++ 16.11.41 | 14.29.30156.0 | 8 октября 2024 г. | ||
Microsoft Visual C++ 2022 | Visual C++ 17.0.0RC | mfc140.dll | 14.30.30704.0 | 13 октября 2021 г. |
Visual C++ 17.0.5 | 14.31.30708.0 | 14 января 2022 г. | ||
Visual C++ 17.1.0 | 14.31.30818.0 | 27 октября 2021 г. | ||
Visual C++ 17.1.0 | 14.31.30919.0 | 23 декабря 2021 г. | ||
Visual C++ 17.1.0 | 14.31.31005.0 | 26 января 2022 г. | ||
Visual C++ 17.1.0 | 14.31.31103.0 | 26 января 2022 г. | ||
Visual C++ 17.2.0 | 14.32.31302.0 | 17 марта 2022 г. | ||
Visual C++ 17.2.0 | 14.32.31326.0 | 9 апреля 2022 г. | ||
Visual C++ 17.2.5 | 14.32.31332.0 | 1 июля 2022 г. | ||
Visual C++ 17.4.0 | 14.34.31931.0 | 9 ноября 2022 г. | ||
Visual C++ 17.4.5 | 14.34.31938.0 | 14 февраля 2023 г. | ||
Visual C++ 17.6.0 | 14.36.32532.0 | 16 мая 2023 г. | ||
Visual C++ 17.7.1 | 14.38.32919.0 | 11 августа 2023 г. | ||
Visual C++ 17.8.0 | 14.38.33130.0 | 15 ноября 2023 г. | ||
Visual C++ 17.8.6 | 14.38.33135.0 | 6 февраля 2024 г. | ||
Visual C++ 17.9.4 | 14.40.33617.1 | 19 марта 2024 г. | ||
Visual C++ 17.9.4 | 14.40.33810.0 | 1 мая 2024 г. | ||
Visual C++ 17.9.5 | 14.40.33816.0 | 8 октября 2024 г. |