Примечание
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Документы и представления связаны в типичном приложении на базе MFC. Данные хранятся в документе, но представление имеет привилегированный доступ к данным. Разделение документа от представления отделяет хранение и обслуживание данных от отображения.
Получение доступа к данным документа из представления
Представление обращается к данным документа с помощью функции GetDocument, которая возвращает указатель на документ, или делая класс представления подклассом C++ класса документа. Затем представление использует свой доступ к данным, чтобы получить их, когда оно готово для отображения или другой обработки.
Например, из функции-члена OnDraw представление использует GetDocument
для получения указателя документа. Затем он использует этот указатель для доступа к элементу CString
данных в документе. Представление передает строку в функцию TextOut
. Чтобы просмотреть код для этого примера, см. статью "Рисование" в представлении.
Ввод пользователя в вид
Представление также может интерпретировать щелчк мыши внутри себя как выбор или редактирование данных. Аналогичным образом он может интерпретировать нажатия клавиш как запись данных или редактирование. Предположим, пользователь вводит строку в представлении, которое управляет текстом. Представление получает указатель на документ и использует его для передачи новых данных в документ, который сохраняет их в некоторую структуру данных.
Обновление нескольких представлений одного документа
В приложении с несколькими представлениями одного документа ( например, окно разделения в текстовом редакторе) представление сначала передает новые данные в документ. Затем он вызывает функцию-член UpdateAllViews документа, которая сообщает всем представлениям документа обновить себя, отражая новые данные. Это синхронизирует представления.