- Microsoft Foundation Classes
-
Пакет Microsoft Foundation Classes (MFC) — библиотека на языке C++, разработанная Microsoft и призванная облегчить разработку GUI-приложений для Microsoft Windows путем использования богатого набора библиотечных классов.
Содержание
Принцип действия
Библиотека MFC, как и её основной конкурент, Borland VCL, облегчает работу с GUI путем создания каркаса приложения — «скелетной» программы, автоматически создаваемой по заданному макету интерфейса и полностью берущей на себя рутинные действия по его обслуживанию (отработка оконных событий, пересылка данных между внутренними буферами элементов и переменными программы и т. п.). Программисту после генерации каркаса приложения необходимо только вписать код в места, где требуются специальные действия. Каркас должен иметь вполне определенную структуру, поэтому для его генерации и изменения в Visual C++ предусмотрены мастера.
Кроме того, MFC предоставляет объектно-ориентированный слой оберток (англ. wrappers) над множеством функций Windows API, делающий несколько более удобной работу с ними. Этот слой представляет множество встроенных в систему объектов (окна, виджеты, файлы и т. п.) в виде классов и опять же берет на себя рутинные действия вроде закрытия дескрипторов и выделения/освобождения памяти.
Добавление кода в каркас приложения
Добавление кода приложения к каркасу реализовано двумя способами. Первый использует механизм наследования: основные программные структуры каркаса представлены в виде классов, наследуемых от библиотечных. В этих классах предусмотрено множество виртуальных функций, вызываемых в определенные моменты работы программы. Путем доопределения (в большинстве случаев необходимо вызвать функцию базового класса) этих функций программист может добавлять выполнение в эти моменты своего кода.
Второй способ используется для добавления обработчиков оконных событий. Мастер создает внутри каркасов классов, связанных с окнами, специальные массивы — карты (оконных) сообщений (англ. message map), содержащие пары «ИД сообщения — указатель на обработчик». При добавлении/удалении обработчика мастер вносит изменения в соответствующую карту сообщений.
История
Первая версия MFC была выпущена вместе с седьмой версией 16-разрядного компилятора языка C/C++ компании Microsoft в 1992 году. Для тех, кто занимался разработкой приложений с использованием API-функций, пакет MFC обещал весьма значительное повышение производительности процесса программирования.
Одной из примечательных особенностей MFC является префикс «Afx», используемый в именах многих функций, макросов и названии стандартного заголовочного файла «stdafx.h». На ранней стадии разработки, то, что впоследствии стало называться MFC, имело название «Application Framework Extensions» и аббревиатуру «Afx». Решение изменить название на Microsoft Foundation Classes (MFC) было принято слишком поздно, чтобы менять упоминания Afx в коде.
Object Windows Library (OWL), разработанная компанией Borland для работы с собственным компилятором C++, была конкурирующим продуктом, представленным в тот же период. В конце концов Borland прекратила разработку OWL и приобрела краткосрочную лицензию на использование библиотек для работы с MFC, но так и не предложила полной поддержки MFC в своих продуктах. Позднее Borland выпустила VCL в качестве замены OWL.
Упор компании Microsoft на MFC был ослаблен в пользу Microsoft .NET Framework. Однако, несмотря на это, MFC по-прежнему остается популярной среди разработчиков.
В апреле 2008 года Microsoft выпустила, после многолетнего бездействия, значительное обновление к MFC под названием MFC Feature Pack. Это обновление предлагалось к установке как дополнение к Visual Studio 2008. В основе своей это были добавочные классы MFC, права на которые были приобретены у российской фирмы BCGSoft[1]. В MFC включалась поддержка нового интерфейса Ribbon и несколько других усовершенствований, связанных с улучшенными интерфейсными элементами управления. После выпущенного пакета обновления для Visual Studio 2008 данные классы стали неотъемлемой частью MFC.
Версии
Версия продукта Версия MFC Год выхода Microsoft C/C++ 7.0 MFC 1.0 1992 Visual C++ 1.0 MFC 2.0 (введена архитектура документ-представление) Visual C++ 1.5 MFC 2.5 (реализована поддержка технологий ODBC и drag-and-drop) Visual C++ 1.52c MFC 2.5 (последняя платформа разработки для MS Windows 3.x) Visual C++ 2.0 MFC 3.0 (появилась возможность реализации многозадачности и поддержка Unicode) Visual C++ 2.1 MFC 3.1 Visual C++ 2.2 MFC 3.2 Visual C++ 4.0 MFC 4.0 (mfc40.dll включена в состав Windows 95) август 1995 Visual C++ 4.1 MFC 4.1 Visual C++ 4.2 MFC 4.2 (mfc42.dll включена в первоначальный выпуск Windows 98) март 1998 eMbedded Visual C++ 3.0 MFC 4.2 (mfc42.dll) Visual C++ 5.0 MFC 4.21 (mfc42.dll), значительное обновление MFC 4.2. Visual C++ 6.0 MFC 6.0 (mfc42.dll) 1998 eMbedded Visual C++ 4.0 MFC 6.0 (mfcce400.dll) Visual C++ .NET 2002 (Visual C++ 7.0) MFC 7.0 (mfc70.dll), .NET 1.0 февраль 2002 Visual C++ .NET 2003 (Visual C++ 7.1) MFC 7.1 (mfc71.dll), .NET 1.1 апрель 2003 Visual C++ 20051 (Visual C++ 8.0) MFC 8.0 (mfc80.dll), .NET 2.0 октябрь 2005 Visual C++ 20081 (Visual C++ 9.0) MFC 9.0.21022 (mfc90.dll), .NET 3.5 ноябрь 2007 Visual C++ 20081 with Feature Pack MFC 9.0.30411 (mfc90.dll) апрель 2008 Visual C++ 20081 SP1 MFC 9.0.30729 (mfc90.dll) август 2008 Visual C++ 20081 Security Update (KB971092) MFC 9.0.30729.4148 (mfc90.dll) июль 2009 Visual C++ 2010 MFC 10.0.30319.1 (mfc100.dll), .NET 4.0 апрель 2010 - 1 Библиотека MFC не входит в Visual Studio редакции Express.
Примечания
См. также
- Иерархия классов MFC
- Microsoft Windows Template Library (WTL) — облегчённая альтернатива библиотеке MFC
Microsoft Foundation Classes Архитектура приложения CCmdTarget • CWinThread • CWinApp • CDocument • CDocTemplate • CDocItem • COleControlContainer Оконные объекты CWnd • CFrameWnd • CControlBar • CPropertySheet • CDialog • CView • CButton • CComboBox • CEdit • CStatic • ... Исключения CException • CArchiveException • CSimpleException Работа с файлами CFile • CSocketFile • CStdioFile Средства рисования CDC • CGdiObject • CPaintDC • CClientDC • CWindowDC • CMetaFileDC Базы данных CDatabase • CRecordset • CDaoDatabase • CDaoRecordset • CDaoQueryDef • CDaoTableDef • CDaoWorkspace • CLongBinary Синхронизация CSyncObject • CAsyncSocket Массивы, списки CArray • CList • CMap Простые типы CObject • CFileTime • CFileTimeSpan • CPoint • CRect • CSize • CString • CTime • CTimeSpan • CArchive • CMultiLock • CSingleLock Инструменты разработки элементов графического интерфейса Низко-
уровневыеMacintosh Toolbox/Carbon • Windows API • Intrinsics • Intuition • Xlib
Высоко-
уровневыеAmiga OS BOOPSI • Magic User Interface • Zune • ReAction GUI
Mac OS и
Mac OS XCocoa • MacApp • MacZoop • PowerPlant
Microsoft
WindowsMicrosoft Foundation Classes • Windows Template Library • SmartWin++ • Object Windows Library • Visual Component Library • Windows Forms • Windows Presentation Foundation
UNIX, под X Кросс-
платфор-
менныеНа основе Flash ASWing • Adobe Flex • Gnash • SWF2EXE Software
На основе XML,
AJAX или SVGAmple SDK • CougarXML • Dojo Toolkit • Echo • ExtJS • GladeXML • Google Web Toolkit • jQuery • Lively Kernel • MooTools • Pyjamas • qooxdoo • Rialto Toolkit • script.aculo.us • XML User Interface • XUL • Yahoo! UI Library
На основе Java На основе
C или C++Agar • CEGUI • Component Library for Cross Platform • dlib C++ Library • FLTK • FOX toolkit • OpenGL User Interface Library • GTK+ • IUP • Juce • JX Application Framework • Qt • TnFOX • Visual Component Framework • wxWidgets • YAAF • XForms • XVT • Ultimate++
На основе Common Lisp CAPI • Common Graphics • CLIM • McCLIM • Garnet
На основе Pascal IP Pascal • Lazarus • fpGUI • FireMonkey
На основе Python На основе Objective C На основе других Программные интерфейсы и фреймворки Microsoft Windows Графика Проводник Windows • DirectX • Direct3D • GDI • Windows Presentation Foundation • Windows Color System • Windows Image Acquisition • Windows Imaging Component Звук DirectSound • DirectMusic • XACT • Speech API • MME Мультимедиа DirectShow • Windows Media • Media Foundation Веб MSHTML • MSXML • Платформа RSS для Windows • JScript • ActiveX • XMLHttpRequest • Гаджеты Доступ к данным Компоненты Microsoft Data Access • Extensible Storage Engine • ADO.NET • Sync Framework • Jet-механизм Сети Winsock (LSP) • Filtering Platform • NDIS • Windows Rally • Сервис фоновой интеллектуальой передачи данных • P2P API Коммуникации TAPI Администрирование Консоль Win32 • Windows Script Host • Инструментарий управления Windows • PowerShell • Планировщик задач • Offline Files • Теневое копирование • Windows Installer • Диспетчер ошибок Windows • Журнал событий Windows Модель компонентов COM • COM+ • DCOM • .NET Framework Библиотеки Microsoft Foundation Classes (MFC) • Active Template Library (ATL) • Windows Template Library (WTL) • Base Class Library (BCL) Разработка драйверов Windows Driver Model • Windows Driver Foundation (KMDF • UMDF) Безопасность CryptoAPI (CAPICOM) • Windows CardSpace • Data protection API • Security Support Provider Interface .NET .NET Framework • ASP.NET • ADO.NET • .NET Remoting • Windows Presentation Foundation • Windows Workflow Foundation • Windows Communication Foundation • Windows CardSpace • XNA Framework • Silverlight • Библиотека параллельного программирования Межпроцессное
взаимодействиеDynamic Data Exchange (DDE) • MSRPC • Именованные каналы Текст и
поддержка языковFramework Текстовых сервисов • Объектная модель текстов • Редактор метода ввода • Языковые пакеты • Многоязычный интерфейс Игры XNA Framework • DirectX Категории:- Библиотеки виджетов
- Microsoft
- Библиотеки C++
- Объектно-ориентированное программирование
Wikimedia Foundation. 2010.