Microsoft Foundation Classes

Материал из Национальной библиотеки им. Н. Э. Баумана
Последнее изменение этой страницы: 22:55, 21 марта 2018.
Microsoft Foundation Classes
Разработчики: Microsoft
Выпущена: 1992; 28 years ago (1992)
Предыдущий выпуск: 14.10.25008.0 / 7 March 2017 года; 3 years ago (2017-03-07)
Написана на: С++
Операционная система: Microsoft Windows
Лицензия: Proprietary
Веб-сайт msdn.microsoft.com/en-us/library/d06h2x6e.aspx

Microsoft Foundation Classes (сокр. MFC) – библиотека для языка С++, содержащая набор классов для разработки графических интерфейсов для ОС семейства Microsoft Windows.

Библиотека создает т.н. каркас приложения – автоматически генерируемая заготовка интерфейса, автоматизирующая операции обслуживания интерфейса, например, обработку событий пользовательского взаимодействия с формой. Каркас может быть изменен пользователем при помощи специальных средств. Помимо этого, библиотека взаимодействует с Windows API, делая работу с ними более простой и удобной, представляя инструменты Windows API в виде абстрактных классов в духе объектно-ориентированного подхода.

Создание приложение MFC

История

Для достижения основных целей – повышения конкурентоспособности платформы приложений для программирования в Microsoft Windows, а также оптимизации некоторых процессов, позволяющих создавать качественные и эффективные приложения с меньшими ресурсными затратами, перед разработчиками стояли две основные задачи:

  • MFC должна служить объектно-ориентированным интерфейсом для доступа к API операционных систем семейства Windows с помощью повторно используемых компонент-классов;
  • Издержки по времени вычислений и по объему запрашиваемой памяти при использовании MFC должны быть минимальны.

Первая версия MFC 1.0 была выпущена в 1992 году и была совмещена с релизом Microsoft C/C++ 7.0. В дальнейшем новые версии MFC были связаны с выходившими версиями Visual C++. К числу примечательных версий MFC следует отнести MFC 7.0, которая вышла вместе с Visual C++ .NET 2002 и в которой было впервые реализовано взаимодействие с платформой .NET. На данный момент последней является версия MFC 14.0.24210.0, вышедшая в июне 2016 года, совместная с Visual C++ 2015 Up. 3.

В настоящее время компания Microsoft уделяет относительно мало внимания развитию MFC, предпочитая ему платформу .NET, первая версия которой была представлена в 2002 году.

Начиная с версии MFC 11.0 поддерживаемся создание интерфейсов Office, аналогичных тем, что используются в пакете Microsoft Office.

В апреле 2008 года Microsoft выпустила, после многолетнего бездействия, значительное обновление к MFC под названием MFC Feature Pack. Это обновление предлагалось к установке как дополнение к Visual Studio 2008. В основе своей это были добавочные классы MFC, права на которые были приобретены у российской фирмы BCGSoft[Источник 1].

Архитектура приложений

Создание приложения с использованием преимуществ MFC подразумевает следование определенной последовательности операций с размещением и обработкой данных приложения. Структура MFC содержит два ориентированных на приложение компонента: документ (document) и представление (view). Документ – имя, присвоенное набору данных приложения, с которыми взаимодействует пользователь. В общем массиве данных документ рассматривается как единое целое, основанный не только на текстовой природе: это могут быть данные игры, геометрической модели, иных коллекций данных, т.е. это абстрактное представление данных программы в памяти компьютера. Документ в программе определяется как объект класса документа, а сам класс документа наследуется от класса библиотеки MFC по имени CDocument. При создании приложения возможно использовать несколько типов документов.

Используя платформу MFC, пользователь имеет выбор: работать с несколькими документами одновременно или только с одним. Однодокументарный интерфейс сокр. SDI (Single Document Interface) поддерживается библиотекой для программ, которым нужно открывать по одному документу за раз. Программы, использующие в своей работе несколько документов одновременно, сокращенно называются MDI (Multiple Document Interface). Значительным преимуществом работы MDI является возможность организовать одновременную обработку документов разного типа, каждый из которых отображается в собственном визуальном окне.

Представление – объект, предлагающий механизм отображения некоторых или всех данных, которые хранятся в документе. Это означает, что за изображение данных на экране, принтере или любом другом устройстве отвечает представление, которое использует для этого класс CView. Отображение данных в окне и взаимодействие пользователя определяется указанным объектом. Объект этого класса взаимодействует с пользователем, с одной стороны, организует доступ к интерфейсной части документа для возможного обновления данных документа – с другой. Представление отображает данные, содержащиеся в документе. При необходимости пользователь может задать несколько представлений документа или только часть. Например, при работе с текстовыми форматами пользователь может отобразить данные документа в виде диаграммы, содержащей процентные значения или доли, таблицы или графика.

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

Отметим, что приложения MFC можно писать и без использования архитектуры «документ/представление», но доступ к большинству возможностей библиотеки будет ограничен, т.к. работа приложения возможно только при поддержке указанной основы. Подобное условие со стороны разработчиков можно рассмотреть как ограничение, но в действительности, большинство программ, обрабатывающих документы какого-либо типа, могут быть преобразованы в указанную архитектуру.

Стандартные классы

На сегодняшний день MFC содержит около 200 классов, представляющих практически все необходимое для написания Windows-приложений: от окон до элементов управления ActiveX. Каждый класс имеет свое целевое назначение: одни классы используются непосредственно, другие (базовые) в целях создания производных классов. Классы дифференцированы по сложности: например, класс CPoint предназначен для хранения двумерных координат точки, а класс CWnd инкапсулирует функциональность окна Windows. Выделим четыре базовых класса, которые появляются почти в каждом Windows-приложении на основе MFC:

  • Класс приложения CMyAPp;
  • Класс обрамляющего окна CMyWnd;
  • Класс представления CMyView, которые определяет, как должны отображаться данные, содержащиеся в CMyDoc, созданное объектом CMyWnd;
  • Класс документа CMyDoc, которые определяет содержащий данные документ.
Рис.1

На рисунке 1 изображена схема структуры наследования библиотечных классов MFC (большинство классов унаследованы от класса CObject). Именно этот класс обеспечивает для своих подклассов такие возможности, как запись и чтение данных объекта на диск, средства динамического получения информации о классе (Run-time class information, RTCI), диагностическая поддержка.

Направляющие стрелки расположены от базового класса к производному. Имена классов могут отличаться в зависимости от каждого конкретного приложения, однако наследование от MFC в основном одно и то же, хотя могут быть и альтернативные базовые классы, в частности, класс представления.

Библиотека MFC предоставляет программисту «каркас» приложения, это т.н. заготовка, содержащая определенный набор классов и функций для выполнения типичных операций приложения Windows, например, по созданию главного окна, работе с меню и т.д. Используя для написания приложения платформу MFC, пользователь может перегружать виртуальные функции классов «каркаса», добавляя новые классы. Центральное место в «каркасе» приложения MFC занимает класс СWinApp, в котором содержатся общие аспекты работы приложения, например, главный цикл обработки сообщений.

Создание приложений

При разработки программ на базе MFC используются четыре основных инструмента:

  • Мастер создания приложений (Application Wizard) для создания базового кода программы;
  • Контекстное меню в Class View (Представление классов) для добавления новых классов и ресурсов к проекту;
  • Контекстное меню класса используется в Class View для расширения и настройки существующих классов программы;
  • Редактор ресурсов применяется для модификации меню и панели инструментов.

В MFC доступно несколько редакторов ресурсов, каждый из которых применяется в определенной ситуации (зависит от вида редактируемого ресурса)


Примечания

  1. About us // BCGSoft. [1998-2018]. Дата обновления: 05.03.2018. URL: http://www.bcgsoft.com/about.htm (дата обращения: 05.03.2018).

Ссылки/Литература