Архитектура "документ-представление"

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

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

Хотя вы можете легко переопределить или игнорировать разделение документов и представлений, в большинстве случаев существуют убедительные причины для выполнения этой модели. Одним из лучших вариантов является необходимость в нескольких представлениях одного документа, таких как электронная таблица и представление диаграммы. Модель документа или представления позволяет отдельному объекту представления представлять каждое представление данных, а код, общий для всех представлений (например, подсистемы вычислений) может находиться в документе. Документ также принимает задачу обновления всех представлений при изменении данных.

Архитектура документов и представлений MFC упрощает поддержку нескольких представлений, нескольких типов документов, разделителей окон и других ценных функций пользовательского интерфейса.

Части платформы MFC, наиболее видимые как пользователю, так и программисту, являются документом и представлением. Большая часть вашей работы в разработке приложения с помощью платформы входит в написание документа и просмотра классов. В этой статье описано:

  • Цели документов и представлений и способ их взаимодействия в платформе.

  • Что необходимо сделать, чтобы реализовать их.

В основе документа или представления находятся четыре ключевых класса:

Класс CDocument (или COleDocument) поддерживает объекты, используемые для хранения или управления данными программы, и предоставляет базовые функции для программируемых классов документов. Документ представляет единицу данных, которые пользователь обычно открывает с помощью команды "Открыть" в меню "Файл" и сохраняется с помощью команды "Сохранить" в меню "Файл".

CView (или один из многих производных классов) предоставляет основные функции для программных классов представлений. Представление присоединено к документу и выступает в качестве посредника между документом и пользователем: представление отображает изображение документа на экране и интерпретирует входные данные пользователя как операции с документом. Представление также отображает изображение как для печати, так и для предварительного просмотра печати.

CFrameWnd (или один из его вариантов) поддерживает объекты, предоставляющие кадр вокруг одного или нескольких представлений документа.

CDocTemplate (или CSingleDocTemplate или CMultiDocTemplate) поддерживает объект, который координирует один или несколько существующих документов заданного типа и управляет созданием правильных объектов документа, представления и окна кадра для этого типа.

На следующем рисунке показана связь между документом и его представлением.

View is the part of the document that's displayed.
Документ и представление

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

Документы, связанные с ними представления и окна кадров, которые обрамляют представления, создаются шаблоном документа. Шаблон документа отвечает за создание всех документов одного типа документа и управление ими.

Что вы хотите узнать больше о

См. также

Элементы пользовательского интерфейса
Windows
Окна фрейма
Шаблоны документов и процесс создания документа или представления
Создание документа и представления
Создание документов, окон и представлений