Этот тег должен использоваться для вопросов относительно библиотеки фундаментальных классов Microsoft (MFC), платформа C++ для рабочего стола Windows прикладное программирование GUI. Необходимо указать тег для версии C++ или используемой Visual Studio. Из-за размера MFC, дополнительные теги, такие как [com], [wininet], [winapi] или другие теги темы полезны.

Платформа Microsoft Foundation Class (MFC) обеспечивает объектно-ориентированный уровень абстракции сверху большого подмножества API Win32. MFC предлагает диапазон классов и шаблонов, покрывающих почти все функции, использованные в разработке настольного приложения Windows. Это предоставляет модели архитектуры для приложения, в котором это будет создано, а именно, документ - модель - представление, доступное в трех опциях:

  • Приложения SDI (единственный бумажный интерфейс: одно окно),
  • MDI (многодокументный интерфейс: несколько окон)
  • Основанные на диалоговом окне приложения (интерфейс модального диалогового окна).

Существуют предоставленные шаблоны приложений нескольких Visual Studio, которые обеспечивают стартовое место для стиля нового приложения. Новые шаблоны с новой функциональностью и поведением, замеченным в приложениях Microsoft (прикрепляющий окна), такие как Visual Studio, были представлены за эти годы.

MFC использует модель единичного наследования языка C++ (т.е. никакое множественное наследование); все классы формируют иерархию. Более новые классы MFC определяются префиксом CMFC, как в CMFCPropertyPage, или путем добавления Исключая суффиксом, как в CPropertyPageEx класс.

Почти все классы MFC наследовались CObject и все классы окна или классы управления наследовались CWnd класс, который является базовым классом для всех окон и включает все основные обработки, выполненные в окно такое изменение размеров или перемещение окна.

Эта диаграмма MSDN дает нам общее представление об иерархии классов:
http://msdn.microsoft.com/en-us/library/ws8s10w4.aspx

Для разработки Windows UI MFC является очень тонким слоем по Win32 API и следовательно эквивалентно с такой скоростью, как собственный Win32 приложение GUI. Некоторые классы, например, сокеты и сети, можно считать немного более толстыми. Для COM и связанного материала, это считают довольно тяжелым (и следовательно ATL предпочтен).

Модель MFC может чувствовать себя строгой в этом, когда архитектура приложения делает не совсем пригодный парадигма MFC настольного приложения GUI, платформу может быть трудно расширить, не обходя мастера класса Visual Studio и выбрав ручное кодирование.

Для новой разработки контейнеры STL должны быть предпочтены по исходным контейнерам MFC (CList, CArray, и т.д.). Почему контейнеры STL предпочтены по контейнерам MFC?

Поддержка многопоточности MFC - некоторые, что тяжелый и C++ 17/C++ 20 многопоточности и сопрограммы могут быть лучшим подходом для фоновых рабочих потоков. Однако MFC имеет хорошую поддержку потоков пользовательского интерфейса, которые требуют насоса сообщения, а также поддержки библиотеки синхронизации потока WinAPI.

В то время как более ранние версии Visual Studio обеспечили легкий выбор для установки компонентов MFC как одного из нескольких стандартных пакетов, более поздние версии, кажется, имеют MFC как большее количество опции, которая должна быть включена.

Больше деталей по http://en.wikipedia.org/wiki/Microsoft_Foundation_Class_Library