SlideShare a Scribd company logo
АРХИТЕКТУРА
ПРИЛОЖЕНИЙ MFC
Михаил Кройтор
Содержание
 Типы приложений MFC
 Диалоговые приложения
 Однодокументные приложения
 Архитектура Документ / Представление
 Рисование, Печать и предварительный просмотр
 Сериализация данных
 Многодокументные приложения
Типы приложений MFC
 Диалоговые приложения (Dialog Based) –
приложения, не предназначенные для работы с
документами;
 Однодокументные приложения (SDI – Single
Document Interface) – приложения, работающие с
одним документом;
 Многодокументные приложения (MDI – Multiple
Document Interface) – приложения,
поддерживающие работу с несколькими
документами сразу. Каждый документ
отображается в рамках главного окна;
Диалоговые приложения
Диалоговые приложения
 Архитектура диалогового приложения
представляется двумя объектами:
 Объект класса приложения, унаследованного от
CWinApp;
 Объект окна, унаследованного от класса
диалогового окна CDialog.
Однодокументные приложения
Однодокументные приложения
 Однодокументные приложения (SDI – Single
Document Interface) поддерживают работу с
файлами.
 Однодокументные приложения реализуют
архитектуру разделения данных от их
предствления (Document/View –
документ/представление)
Архитектура
Документ / Представление
 Архитектура Документ/Представление
(Document/View) связывает данные с их
отображением на экране. Документ
представляется объектом, содержащим данные
приложения. Представление этого документа
реализуется объектом клиентского окна, с
помощью которого пользователь
взаимодействует с данными приложения.
Архитектура
Документ / Представление
Объект Описание
Документ Объект класса, унаследованного от CDocument.
Определяет данные приложения
Представление Объект класса, унаследованного от CView.
Предназначен для отображения данных
приложения на экране и для организации
взаимодействия этих данных с пользователем.
Рамка окна Объект класса, унаследованного от CFrameWnd.
Представления отображаются в границах этого окна.
Шаблон документа Объект класса, унаследованного от CDocTemplate.
Управляет процессом создания представлений,
документов и окон.
Приложение Объект класса, унаследованного от CWinApp.
Архитектура
Документ / Представление
 Объект документа предназначен для чтения,
сохранения данных, а также для управления
этими данными.
 Один документ может иметь множество
различных представлений.
 Доступ к представлениям через функции
GetFirstViewPosition() и GetNextView()
 Обновляются представления функцией
UpdateAllViews()
Архитектура
Документ / Представление
 Объект представления организует работу пользователя с
данными
 Класс представления может быть унаследован от:
 CView – базовый класс представлений
 CScrollView – представление с поддержкой прокрутки
 CListView – в основе CListCtrl
 CEditView – представление текстового редактора (plain text)
 CRichEditView – представление текстового редактора (rich text)
 CFormView – в основе представления - форма
 CHtmlView – представление, отображающее html
 CHtmlEditView –представление, отображающее html,
позволяющее редактировать
 Доступ к данным документа осуществляется через
функцию GetDocument()
Рисование, Печать и
предварительный просмотр
 Приложения MFC взаимодействуют с
графическими устройствами через GDI
интерфейсы (Graphics Device Interface).
 Интерфейс GDI работает со структурами
данных, называемых контекстами устройства,
которые описывают устройства вывода.
 CDC – класс, инкапсулирующий контекст
устройства и большинство функций GDI.
Рисование, Печать и
предварительный просмотр
 специальные классы, унаследованные от CDC:
 CPaintDC – для прорисовки недействительной
части окна
 CClientDC – описывает контекст устройства
клиентской области окна
 CWindowDC – описывает контекст устройства,
представляющего всѐ окно вместе с рамкой
 CMetafileDC – описывает данные в аппаратно-
независимом формате.
Рисование, Печать и
предварительный просмотр
 Графический вывод данных приложения
осуществляется функцией OnDraw
представления.
 void CView::OnDraw(CDC* pDC);
 GDI является аппаратно-независимым
интерфейсом, поэтому вывод на печать,
предварительный просмотр и пр. производится
одинаковым образом.
Сериализация данных
 сериализация – механизм, в котором каждый
объект сам определяет способ сохранения
своего состояния.
 Механизм сериализации реализуется при помощи
функции Serialize класса CObject.
 Любой объект в MFC, класс которого унаследован
от класса CObject, поддерживает сериализацию.
 Базовые типы данных являются сериализуемыми.
Сериализация данных:
функция Serialize
 void CdrawfuncDoc::Serialize(CArchive& ar){
if (ar.IsStoring()){
// TODO: add storing code here
}
else
{
// TODO: add loading code here
}
}
Сериализация данных:
создание сериализуемого класса
 Для того, чтобы объект сделать сериализуемым,
необходимо выполнить следующие действия:
 Унаследовать класс от класса CObject. Это обеспечит
базовый механизм сериализации.
 Добавить в объявление класса макрос
DECLARE_SERIAL(<имя класса>). Макрос добавляет в
класс дополнительные поля и методы, которые
обеспечивают механизм сериализации.
 Перегрузить функцию Serialize.
 Добавить макрос IMPLEMENT_SERIAL(<имя
класса>,<имя базового класса>,<номер версии>) в
реализацию класса. Этот макрос обеспечивает реализацию
методов, объявленных макросом DECLARE_SERIAL.
Сериализация данных:
сериализация контейнеров
 Для сериализации контейнеров необходимо
 Чтобы элементы контейнера были сериализуемыми
 элементы контейнера должны иметь конструктор
по умолчанию и оператор копирования.
 специализировать шаблонную функцию
SerializeElements.
template<>
void AFXAPI SerializeElements(CArchive& ar,
CStudent* pEl, INT_PTR nCount){
int i;
for(i = 0; i != nCount; ++i){
pEl[i].Serialize(ar);
}
}
Многодокументные приложения
Многодокументные приложения
 Архитектура многодокументных приложений
(MDI) предполагает создание дочерних окон
документов в рамках общего окна приложения.
 Приложения с вкладками (Tabbed Document
Interface - TDI) обычно представляют частный
случай MDI.
Многодокументные приложения
КЛАСС ОПИСАНИЕ
CWinApp Класс приложения
CMDIFrameWnd Класс основного окна приложения
CMDIChildWnd Класс дочерних окон приложения
CMultiDocTemplate Класс шаблона документа. Отвечает за создание
дочерних окон, документов и их представлений
CDocument Класс документа
CView Класс представления

More Related Content

PPTX
создание приложений windows forms
PPTX
Обзор MS.Net Framework
PPTX
Введение в MFC
PPT
Lecture 11 1
PPT
Lecture 11 1
PPTX
Переиспользование кода и компонентов при разработке Windows 8 и Windows Phone...
PPTX
mfc событийное программирование
PPTX
особенности программирования на с++
создание приложений windows forms
Обзор MS.Net Framework
Введение в MFC
Lecture 11 1
Lecture 11 1
Переиспользование кода и компонентов при разработке Windows 8 и Windows Phone...
mfc событийное программирование
особенности программирования на с++

Similar to архитектура приложений mfc (20)

PPTX
HTML 5: будущее уже сегодня, Сергей Байдачный, Microsoft Ukraine
PPTX
PPTX
Microsoft Visual Studio 2010
PDF
C# Desktop. Занятие 08.
PPTX
Genome
PPT
Lecture 11 2
PPT
5 создание графического интерфейса пользователя
PDF
Паттерны быстрой разработки WPF MVVM бизнес-приложений
RTF
PPT
идеология Drupal 8 уже в drupal 7 вячеслав касихин
PPTX
Конструктор отчетов
PDF
лек11 1
PPTX
Создание графического интерфейса пользователя мобильных Android приложений (ч...
PDF
Шаблоны проектирования в Magento
PPTX
Модульная структура. Цветцих Денис D2D Just.NET
PPTX
Модульная структура
PDF
CQRS на практике. В поиске точки масштабирования и новых метафор
PPT
10 компонентные и офисные приложения на платформе microsoft
PDF
Управление гибридным ландшафтом с помощью Cisco CloudCenter
PDF
лек11 2
HTML 5: будущее уже сегодня, Сергей Байдачный, Microsoft Ukraine
Microsoft Visual Studio 2010
C# Desktop. Занятие 08.
Genome
Lecture 11 2
5 создание графического интерфейса пользователя
Паттерны быстрой разработки WPF MVVM бизнес-приложений
идеология Drupal 8 уже в drupal 7 вячеслав касихин
Конструктор отчетов
лек11 1
Создание графического интерфейса пользователя мобильных Android приложений (ч...
Шаблоны проектирования в Magento
Модульная структура. Цветцих Денис D2D Just.NET
Модульная структура
CQRS на практике. В поиске точки масштабирования и новых метафор
10 компонентные и офисные приложения на платформе microsoft
Управление гибридным ландшафтом с помощью Cisco CloudCenter
лек11 2
Ad

More from mcroitor (20)

PPTX
09 server mgmt_ii_ro
PPTX
09 server mgmt_ii_ru
PPTX
10 server security_ro
PPTX
10 server security_ru
PPTX
08 server mgmt_ro
PPTX
08 server mgmt_ru
PPTX
07 virtual hosts_ru
PPTX
07 virtual hosts_ro
PPTX
06 php instalation_ro
PPTX
06 php instalation_ru
PPTX
05 db server_deployment_ro
PPTX
05 db server_deployment_ru
PPTX
04 web server_deployment_ro
PPTX
04 web server_deployment_ru
PPTX
03 web server_architecture_ro
PPTX
03 web server_architecture_ru
PPTX
02 server hardware_ro
PPTX
02 server hardware_ru
PPTX
01 server definition_ro
PPTX
01 server definition
09 server mgmt_ii_ro
09 server mgmt_ii_ru
10 server security_ro
10 server security_ru
08 server mgmt_ro
08 server mgmt_ru
07 virtual hosts_ru
07 virtual hosts_ro
06 php instalation_ro
06 php instalation_ru
05 db server_deployment_ro
05 db server_deployment_ru
04 web server_deployment_ro
04 web server_deployment_ru
03 web server_architecture_ro
03 web server_architecture_ru
02 server hardware_ro
02 server hardware_ru
01 server definition_ro
01 server definition
Ad

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

  • 2. Содержание  Типы приложений MFC  Диалоговые приложения  Однодокументные приложения  Архитектура Документ / Представление  Рисование, Печать и предварительный просмотр  Сериализация данных  Многодокументные приложения
  • 3. Типы приложений MFC  Диалоговые приложения (Dialog Based) – приложения, не предназначенные для работы с документами;  Однодокументные приложения (SDI – Single Document Interface) – приложения, работающие с одним документом;  Многодокументные приложения (MDI – Multiple Document Interface) – приложения, поддерживающие работу с несколькими документами сразу. Каждый документ отображается в рамках главного окна;
  • 5. Диалоговые приложения  Архитектура диалогового приложения представляется двумя объектами:  Объект класса приложения, унаследованного от CWinApp;  Объект окна, унаследованного от класса диалогового окна CDialog.
  • 7. Однодокументные приложения  Однодокументные приложения (SDI – Single Document Interface) поддерживают работу с файлами.  Однодокументные приложения реализуют архитектуру разделения данных от их предствления (Document/View – документ/представление)
  • 8. Архитектура Документ / Представление  Архитектура Документ/Представление (Document/View) связывает данные с их отображением на экране. Документ представляется объектом, содержащим данные приложения. Представление этого документа реализуется объектом клиентского окна, с помощью которого пользователь взаимодействует с данными приложения.
  • 9. Архитектура Документ / Представление Объект Описание Документ Объект класса, унаследованного от CDocument. Определяет данные приложения Представление Объект класса, унаследованного от CView. Предназначен для отображения данных приложения на экране и для организации взаимодействия этих данных с пользователем. Рамка окна Объект класса, унаследованного от CFrameWnd. Представления отображаются в границах этого окна. Шаблон документа Объект класса, унаследованного от CDocTemplate. Управляет процессом создания представлений, документов и окон. Приложение Объект класса, унаследованного от CWinApp.
  • 10. Архитектура Документ / Представление  Объект документа предназначен для чтения, сохранения данных, а также для управления этими данными.  Один документ может иметь множество различных представлений.  Доступ к представлениям через функции GetFirstViewPosition() и GetNextView()  Обновляются представления функцией UpdateAllViews()
  • 11. Архитектура Документ / Представление  Объект представления организует работу пользователя с данными  Класс представления может быть унаследован от:  CView – базовый класс представлений  CScrollView – представление с поддержкой прокрутки  CListView – в основе CListCtrl  CEditView – представление текстового редактора (plain text)  CRichEditView – представление текстового редактора (rich text)  CFormView – в основе представления - форма  CHtmlView – представление, отображающее html  CHtmlEditView –представление, отображающее html, позволяющее редактировать  Доступ к данным документа осуществляется через функцию GetDocument()
  • 12. Рисование, Печать и предварительный просмотр  Приложения MFC взаимодействуют с графическими устройствами через GDI интерфейсы (Graphics Device Interface).  Интерфейс GDI работает со структурами данных, называемых контекстами устройства, которые описывают устройства вывода.  CDC – класс, инкапсулирующий контекст устройства и большинство функций GDI.
  • 13. Рисование, Печать и предварительный просмотр  специальные классы, унаследованные от CDC:  CPaintDC – для прорисовки недействительной части окна  CClientDC – описывает контекст устройства клиентской области окна  CWindowDC – описывает контекст устройства, представляющего всѐ окно вместе с рамкой  CMetafileDC – описывает данные в аппаратно- независимом формате.
  • 14. Рисование, Печать и предварительный просмотр  Графический вывод данных приложения осуществляется функцией OnDraw представления.  void CView::OnDraw(CDC* pDC);  GDI является аппаратно-независимым интерфейсом, поэтому вывод на печать, предварительный просмотр и пр. производится одинаковым образом.
  • 15. Сериализация данных  сериализация – механизм, в котором каждый объект сам определяет способ сохранения своего состояния.  Механизм сериализации реализуется при помощи функции Serialize класса CObject.  Любой объект в MFC, класс которого унаследован от класса CObject, поддерживает сериализацию.  Базовые типы данных являются сериализуемыми.
  • 16. Сериализация данных: функция Serialize  void CdrawfuncDoc::Serialize(CArchive& ar){ if (ar.IsStoring()){ // TODO: add storing code here } else { // TODO: add loading code here } }
  • 17. Сериализация данных: создание сериализуемого класса  Для того, чтобы объект сделать сериализуемым, необходимо выполнить следующие действия:  Унаследовать класс от класса CObject. Это обеспечит базовый механизм сериализации.  Добавить в объявление класса макрос DECLARE_SERIAL(<имя класса>). Макрос добавляет в класс дополнительные поля и методы, которые обеспечивают механизм сериализации.  Перегрузить функцию Serialize.  Добавить макрос IMPLEMENT_SERIAL(<имя класса>,<имя базового класса>,<номер версии>) в реализацию класса. Этот макрос обеспечивает реализацию методов, объявленных макросом DECLARE_SERIAL.
  • 18. Сериализация данных: сериализация контейнеров  Для сериализации контейнеров необходимо  Чтобы элементы контейнера были сериализуемыми  элементы контейнера должны иметь конструктор по умолчанию и оператор копирования.  специализировать шаблонную функцию SerializeElements. template<> void AFXAPI SerializeElements(CArchive& ar, CStudent* pEl, INT_PTR nCount){ int i; for(i = 0; i != nCount; ++i){ pEl[i].Serialize(ar); } }
  • 20. Многодокументные приложения  Архитектура многодокументных приложений (MDI) предполагает создание дочерних окон документов в рамках общего окна приложения.  Приложения с вкладками (Tabbed Document Interface - TDI) обычно представляют частный случай MDI.
  • 21. Многодокументные приложения КЛАСС ОПИСАНИЕ CWinApp Класс приложения CMDIFrameWnd Класс основного окна приложения CMDIChildWnd Класс дочерних окон приложения CMultiDocTemplate Класс шаблона документа. Отвечает за создание дочерних окон, документов и их представлений CDocument Класс документа CView Класс представления