Введение в программирование

       

Документы и отображения


Архитектура "документ/отображение" (document/view) базируется на взаимодействии четырех основных классов.

  • Класс CDocument (или COleDocument ) реализует основные возможности внутреннего представления документа. Этот класс используется для управления данными (обычно документ представляет модуль данных, открываемых по команде Open и сохраняемых командой Save меню File).
  • Класс CView (или один из его наследуемых классов) отвечает за отображение содержания документа или любой графической информации. Объекты этого класса будем называть отображениями. Одному документу может быть сопоставлено несколько различных объектов отображений. При этом отображение пристыковывается или сопоставляется документу.

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

  • Класс CFrameWnd (или другой класс Windows-окна, включая MDIFrameWnd и CMDIChildWnd) представляют объекты, обеспечивающие окно-рамку (frame) вокруг одного или нескольких отображений документа.
  • Класс CDocTemplate (или классы CSingleDocTemplate, CMultiDocTemplate) поддерживают объект шаблона документа, координирующий один или несколько существующих документов заданного типа, и управляют созданием документа, отображения и окна-рамки для этого типа.


Рис. 20.1.  Взаимосвязь объектов "документ ->отображение -> окно-рамка "

Объект "отображение" используется не только для представления документов на экране. Он же представляет документ и для печати, и для предварительного просмотра печатаемого документа.

С помощью механизма "документ-отображение" реализуется разделение данных, их экранное представление и обработка действий пользователя.

Операции по изменению данных реализуются классами документа.
Объект отображение только вызывает этот интерфейс для доступа и обновления данных.

Документы, сопоставленные им отображения, окна-рамки создаются с использованием шаблона документа. Каждый шаблон документа используется для создания всех документов одного типа и управления ими.

Создание нового документа и сопоставленного ему отображения и окна-рамки. выполняется различными объектами: объектом "приложение", шаблоном документа, созданным документом и созданным окном-рамкой.

Следующая таблица иллюстрирует, какими объектами создаются шаблон документа, документ, окно-рамка и отображение.

Создающий объектСоздаваемый объект
Приложение (Application object)Шаблон документа
Шаблон документа (Document template)Документ
Шаблон документа (Document template)Окно-рамка
Окно-рамка (Frame window)Отображение (View)
Все оконные MFC-приложения имеют как минимум два объекта: объект "приложение", производный от класса CWinApp, и объект "главное окно", производный от класса CWnd или его потомков - классов CFrameWnd, CMDIFrameWnd и CDialog.

Объект "документ" отвечает за внутреннее представление данных, показываемых объектом "отображене". Объект "отображение" предназначен для манипулирования данными объекта документа. Объект "отображение" состыковывается с объектом "документ" и окном-рамкой, образуя цепочку "документ->отображение->окно". Приложения, использующие SDI (Single Document Interface) или MDI (Multi Document Inter-face) интерфейс соответственно, называются SDI-приложением и MDI-приложением. Такие приложения относятся к приложениям с архитектурой "документ-отображение" (document/view).


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