Библиотека Microsoft Foundation Class (MFC) - это объектно-ориентированная библиотека C ++ для разработки настольных приложений для Windows .
Разработчики) | Microsoft |
---|---|
Первый выпуск | 1992 |
Стабильный выпуск | 14.22.27821.0 / 24 июля 2019 г. [1] |
Написано в | C ++ |
Операционная система | Майкрософт Виндоус |
Лицензия | Проприетарный |
Веб-сайт | документы |
MFC была представлена Microsoft в 1992 году и быстро получила широкое распространение. Хотя с тех пор Microsoft представила альтернативные платформы приложений, MFC по-прежнему широко используется.
История
MFC был представлен в 1992 году вместе с компилятором Microsoft C / C ++ 7.0 для использования с 16-разрядными версиями Windows в качестве чрезвычайно тонкой объектно-ориентированной оболочки C ++ для Windows API. В то время C ++ только начинал заменять C для разработки коммерческого прикладного программного обеспечения. В программе MFC прямые вызовы Windows API редко нужны. Вместо этого программы создают объекты из классов 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.
Библиотека объектных Windows (OWL), разработанная для использования с компилятором Borland Turbo C ++ , была конкурирующим продуктом, представленным Borland примерно в то же время. В конце концов, Borland прекратил разработку OWL и на короткое время лицензировал распространение заголовков, библиотек и DLL MFC от Microsoft [6] , хотя никогда не предлагал полностью интегрированную поддержку MFC. Позднее Borland выпустила библиотеку визуальных компонентов для замены платформы OWL.
Функции
MFC - это библиотека, которая оборачивает части Windows API в классы C ++ , включая функции, позволяющие им использовать платформу приложения по умолчанию . Классы определены для многих объектов Windows, управляемых дескрипторами, а также для предопределенных окон и общих элементов управления.
На момент своего появления MFC предоставляла макросы C ++ для обработки сообщений Windows (через карты сообщений [7] ), исключений , идентификации типа во время выполнения (RTTI), сериализации и создания экземпляров динамических классов. Макросы для обработки сообщений были нацелены на сокращение потребления памяти за счет исключения ненужного использования виртуальных таблиц, а также на обеспечение более конкретной структуры для различных инструментов, поставляемых Visual C ++, для редактирования и управления кодом без синтаксического анализа всего языка. Макросы обработки сообщений заменили механизм виртуальных функций , предоставляемый C ++.
Макросы для сериализации, исключений и RTTI предвосхитили доступность этих функций в Microsoft C ++ на несколько лет. В 32-разрядных версиях MFC для Windows NT 3.1 и более поздних операционных систем Windows использовались компиляторы, которые реализовывали языковые функции и обновляли макросы, чтобы просто обернуть языковые функции вместо предоставления настраиваемых реализаций, обеспечивая совместимость снизу вверх.
Редактор ленты ресурса MFC позволяет разработчику проектировать ленту графический вместо того, чтобы использовать XML -А декларативную разметку как RibbonX API . При желании компоненты ленты можно программировать напрямую, вызывая новый набор методов класса ленты. Разработчик может комбинировать графическую и программную ленточную разработку по своему усмотрению. Мастер приложений MFC также был обновлен для поддержки новых функций, в том числе флажка для выбора, будет ли приложение использовать ленту или закрепляемые панели. Новая функциональность предоставляется в новых классах, так что старые приложения продолжают работать. [4] Это обновление создано на основе BCGControlBar Library Professional Edition от BCGSoft . [8] Microsoft наложила дополнительные лицензионные требования на пользователей лент. [9] Они включают требование соблюдать рекомендации Microsoft по дизайну пользовательского интерфейса и антиконкурентную оговорку, запрещающую использование пользовательского интерфейса в приложениях, которые конкурируют с Microsoft Office .
MFC можно использовать путем связывания статической библиотеки или добавления библиотеки DLL MFC .
Версии
Продукт | Библиотека | Версия | Дата выпуска | |
---|---|---|---|---|
Имя | Версия | |||
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 (последняя платформа разработки для 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 входит в состав Windows 95 ) | Август 1995 г. |
Visual C ++ 4.1 | mfc40.dll | MFC 4.1 | ||
Visual C ++ 4.2 | mfc42.dll | MFC 4.2 (mfc42.dll включен в исходный выпуск Windows 98 ) | Март 1998 г. | |
Встроенный Visual C ++ 3.0 | mfc42.dll | MFC 4.2 | ||
Microsoft Visual C ++ 5.0 | Visual C ++ 5.0 | mfc42.dll | MFC 4.21, крупное обновление по сравнению с MFC 4.2. | |
Microsoft Visual C ++ 6.0 | Visual C ++ 6.0 | mfc42.dll | MFC 6.0 | 1998 г. |
Встроенный Visual C ++ 4.0 | mfcce400.dll | MFC 6.0 | ||
Microsoft Visual C ++ .NET 2002 | Visual C ++ .NET 2002 (Visual C ++ 7.0) | mfc70.dll | MFC 7.0 | 13 февраля 2002 г. |
Microsoft Visual C ++ .NET 2003 | Visual C ++ .NET 2003 (Visual C ++ 7.1) | mfc71.dll | MFC 7.1 | 24 апреля 2003 г. |
Visual C ++ .NET 2003 + MS11-025 (KB2465373) [10] | MFC 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 с пакетом обновления 1 (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 г. | ||
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 с пакетом обновления 1 (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 г. [15] |
Visual C ++ 2010 + MS11-025 (KB2467173) [10] | 10.0.30319.415 | 12 апреля 2011 г. | ||
Visual C ++ 2010 с пакетом обновления 1 (SP1) | 10.0.40219.1 | 11 марта 2011 г. | ||
Visual C ++ 2010 с пакетом обновления 1 (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 | 26 июля 2012 г. |
Visual C ++ 2012 с обновлением 1 | 11.0.51106.1 | 5 ноября 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 | 5 октября 2013 г. |
Visual C ++ 2013 с обновлением 2 | 12.0.30501.0 | 30 декабря 2014 г. [16] | ||
Visual C ++ 2013 с обновлением 5 + KB3138367 | 12.0.40649.5 | Февраль 2016? | ||
Visual C ++ 2013 с обновлением 5 + KB3179560 | 12.0.40660.0 | 8 июля 2016 г. [17] | ||
Visual C ++ 2013 с обновлением 5 + KB4032938 | 12.0.40664.0 | 18 июля 2017 г. [18] | ||
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 г. [19] | ||
Visual C ++ 2015 с обновлением 2 | 14.0.23918.0 | 30 марта 2016 г. [20] | ||
Visual C ++ 2015 с обновлением 3 | 14.0.24210.0 | 27 июня 2016 г. [21] | ||
Visual C ++ 2015 с обновлением 3 | 14.0.24212.0 | 18 августа 2016 г. | ||
Visual C ++ 2015 с обновлением 3 + KB3165756 | 14.0.24215.1 | 15 сентября 2016 г. [22] | ||
Microsoft Visual C ++ 2017 | Visual C ++ 15.0 | mfc140.dll | 14.10.25008.0 | 7 марта 2017 г. |
Visual C ++ 15.1? | 14.10.25017.0 | Апрель 2017? | ||
Visual C ++ 15.2 | 14.11.25325.0 | 10 мая, 2017 | ||
Visual C ++ 15.4 | 14.12.25810.0 | 10 октября 2017 г. | ||
Visual C ++ 15.6 | 14.13.26020.0 | 6 марта 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 | 10 января 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 г., | ||
Microsoft Visual C ++ 2019 | Visual C ++ 16.0 | mfc140.dll | 14.20.27508.1 | 19 марта 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 | 9 сентября 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 | 14.27.29016.0 | 5 августа 2020 г. | ||
Visual C ++ 16.7.5 | 14.27.29112.0 | 29 сентября 2020 г. | ||
Visual C ++ 16.8 | 14.28.29325.2 | 10 ноября 2020 г. | ||
Visual C ++ 16.8.2 | 14.28.29334.0 | 19 ноября 2020 г. | ||
Visual C ++ 16.9 | 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 г. |
Смотрите также
- Библиотека активных шаблонов (ATL)
- ЮС
- Qt
- Стандартная библиотека шаблонов (STL)
- Библиотека шаблонов Windows (WTL)
- WxWidgets
Рекомендации
- ^ «Примечания к выпуску Visual Studio 2019» . Msdn.microsoft.com . Проверено 24 июля 2019 года .
- ^ Обзор Visual C ++ Express
- ^ «Пакет дополнительных компонентов Visual C ++ 2008 отправлен» . Blogs.msdn.com . Проверено 26 апреля 2008 года .
- ^ а б «Краткий обзор новых функций MFC» . Blogs.msdn.com . Проверено 10 сентября 2019 года .
- ^ «Часто задаваемые вопросы по Visual Studio Express Edition» . Microsoft.com. Архивировано из оригинала на 11 июня 2011 года . Проверено 6 января 2012 года .
- ^ «Microsoft покупает Inprise, улаживает споры» . Techweb.com. Архивировано из оригинального 17 октября 2007 года . Проверено 6 января 2012 года .
- ^ Уильямс, Микки; Дэвид Беннетт. «Создание собственных карт сообщений» . Сообщите ИТ.
- ^ «Обновление MFC на базе BCGSoft» . Msdn2.microsoft.com . Проверено 16 ноября 2007 года .
- ^ «Страница загрузки выпуска пакета дополнительных компонентов Visual C ++ 2008» . Microsoft.com . Проверено 16 мая 2008 года .
- ^ Б с д е е г «MS11-025: Уязвимость в библиотеке Microsoft Foundation Class (MFC) делает возможным удаленное выполнение кода: 12 апреля 2011 г.» . Microsoft.com . Проверено 10 июня 2019 года .
- ^ а б в «Бюллетень по безопасности Microsoft MS09-035 - средний: уязвимости в библиотеке активных шаблонов Visual Studio делают возможным удаленное выполнение кода (969706)» . Microsoft.com . Проверено 19 ноября 2012 года .
- ^ а б в «Защитите свой компьютер от уязвимости безопасности Active Template Library (ATL)» . Архивировано из оригинального 26 октября 2010 года . Проверено 29 октября 2010 года .
- ^ «Обновление безопасности MFC для Microsoft Visual Studio 2005 с пакетом обновления 1» . Microsoft.com . Проверено 19 ноября 2012 года .
- ^ «Где я могу скачать распространяемые компоненты Visual C ++?» . Проверено 10 июня 2019 года .
- ^ «Visual C ++ - изучение новых возможностей C ++ и MFC в Visual Studio 2010» . Msdn.microsoft.com . Проверено 19 ноября 2012 года .
- ^ «Распространяемые пакеты Visual C ++ для Visual Studio 2013» . Msdn.microsoft.com . Проверено 30 декабря 2014 года .
- ^ «Обновление для Visual C ++ 2013 и распространяемого пакета Visual C ++» . Msdn.microsoft.com . Проверено 8 января 2017 года .
- ^ «Обновление для распространяемого пакета Visual C ++ 2013» . Проверено 10 июня 2019 года .
- ^ «Visual Studio 2015 с обновлением 1» . Msdn.microsoft.com . Проверено 12 июня, 2016 .
- ^ «Visual Studio 2015 с обновлением 2» . Msdn.microsoft.com . Проверено 12 июня, 2016 .
- ^ «Visual Studio 2015 с обновлением 3» . Msdn.microsoft.com . Проверено 28 июня, 2016 .
- ^ «Microsoft Visual Studio 2015 с обновлением 3 (KB3165756)» . Msdn.microsoft.com . Проверено 28 августа 2016 года .
дальнейшее чтение
- Просис, Джефф (1999). Программирование Windows с помощью MFC (2-е изд.). Microsoft Press . ISBN 9781572316959.
- Шеперд, Джордж (1996). MFC Internals (7-е изд.). Эддисон-Уэсли . ISBN 9780201407211.
- Круглински, Дэвид (1997). Внутри Visual C ++ (4-е изд.). Microsoft Press . ISBN 9781572315655.
- Microsoft (1995). Microsoft Visual C ++: Программирование с помощью MFC (2-е изд.). Microsoft Press . ISBN 9781556159213.
Внешние ссылки
- Последние поддерживаемые загрузки Visual C ++ - Microsoft
- Где я могу скачать распространяемые компоненты Visual C ++? - Microsoft
- Справочник MSDN MFC - Microsoft
- MFC: Visual Studio 2005 и более поздние версии - Microsoft
- Взгляд изнутри на следующее поколение Visual C ++ (охватывает основные обновления MFC 9) - Microsoft