CDocument* CView:: GetDocument() 


Мы поможем в написании ваших работ!



ЗНАЕТЕ ЛИ ВЫ?

CDocument* CView:: GetDocument()

Поиск

CDocument* CView:: GetDocument()

Генерируя класс, производный от CView, AppWizard создает новую версию этого метода, возвращающую указатель на объект производногоо класса.

 

После того как представление было впервые присоединено к документу, но до его первоначального отображения (при запуске приложения или выборе команд New или Open в меню File) вызывается

 

virtual void CView::OnInitialUpdate()

 

В базовом классе CView она просто вызывает OnUpdate (см. далее).

После того, как документ был модифицирован, в объекте класса CDocument вызывается метод CDocument::UpdateAllViews, запускающий в соответствующих представлениях методы

virtual void CView::OnUpdate(CView *pSender, // Идентифицирует

// представление, которое обновило документ

LPARAM lHint, // некоторая информация о характере

CObject * pHint) // изменений в документе

Реализация этой функции по умолчанию помечает всю рабочую область как недействительную с целью перерисовки ее при получении следующего сообщения WM_PAINT. Представление, указанное в первом аргументе не обновляется. Если pSender=NULL, то обновляются любое представление, где запускается этот метод. Первый аргумент предназначен для пропуска уже обновленного представления в процессе обновления всех представлений изменившегося документа, например, при выполнении функции CDocument::UpdateAllViews.

 

Для изображения содержимого документа иcпользуется чисто виртуальная функция

virtual void CView::OnDraw(CDC *pDC)

Она отвечает за отображение на экране, печать и предварительный просмотр документа. pDC указывает на контекст устройства, на котором будет отображаться представление документа (это может быть экран, принтер или память).

 

Выбрав в качестве базового класса для представлений в нашем каркасе класс CEditView (см. Шаг 6 создания приложения Optimizer), мы обеспечили для пользователя возможности ввода и редактирования текста, а также работу с буфером обмена. CEditView не является потомком элемента управления CEdit (множественное наследование здесь не применяется), однако содержит большинство его методов и работает с текстом аналогичным образом. Эти классы имеют и общие ограничения:

 

· не поддерживают редактирование по принципу «что вижу, то и получаю» WYSIWYG,

· может изображать текст только одним шрифтом и не поддерживает специального форматирования символов,

· размер текста, который может содержать объект класса CEditView, ограничен 64Кб.

 

Строго говоря, в классе CEditView мы видим пример нарушения принципа разделения данных документа и их представления, т.к. текст здесь постоянно хранятся в поле представления, хотя теоретически представление не должно иметь никакого отношения к хранению данных.

 

Класс документа

 

Данные документа определяются в произвольной форме, как переменные класса, производного от CDocument. “Жизненный цикл” документа в MDI-приложении:



Поделиться:


Последнее изменение этой страницы: 2024-06-27; просмотров: 52; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 216.73.217.21 (0.01 с.)