Поделиться через


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

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

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

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

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

Ввод пользователя в вид

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

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

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

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

См. также

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