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

Документы и представления связаны в типичном приложении MFC. Данные хранятся в документе, но представление имеет привилегированный доступ к данным. Разделение документа от представления отделяет хранение и обслуживание данных от отображения.

Получение доступа к данным документа из представления

Представление обращается к данным документа с помощью функции GetDocument , которая возвращает указатель на документ или делает класс представления C++ friend класса документа. Затем представление использует его доступ к данным, чтобы получить данные, когда он готов к рисованию или иначе манипулировать им.

Например, из функции-члена OnDraw представления представление используется GetDocument для получения указателя документа. Затем он использует этот указатель для доступа к элементу CString данных в документе. Представление передает строку TextOut функции. Чтобы просмотреть код для этого примера, см. статью "Рисование" в представлении.

Входные данные пользователя в представление

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

Обновление нескольких представлений одного документа

В приложении с несколькими представлениями одного документа ( например, окно разделения в текстовом редакторе) представление сначала передает новые данные в документ. Затем он вызывает функцию-член UpdateAllViews документа, которая сообщает всем представлениям документа обновить себя, отражая новые данные. Это синхронизирует представления.

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

См. также

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