Визуальное программирование и MFC

       

Взаимодействие документов и обликов


Логически облики привязаны к документу. У классов CDocument и CView есть механизмы для поддержания этой связи. Класс CDocument инкапсулирует список, хранящий все облики данного документа. С помощью методов этого класса облик добавляется и удаляется из списка, осуществляется просмотр списка и получение обликов.

Метод класса CView позволяет облику получить документ, за которым он закреплен:

CDocument* GetDocument() const;

Этот метод очень важен: без него облик не получит доступ к методам документа. Он возвращает константный указатель на документ, за которым закреплен облик. Если облик не закреплен ни за каким документом, возвращается NULL.

Допустим, документ имеет несколько обликов, один из которых изменяет документ. Тогда остальные облики должны синхронизировать свое отображение с измененным содержанием этого документа. Такую синхронизацию обеспечивает метод UpdateAllViews класса CDocument.

Классы объектов-обликов должны быть устроены так, чтобы при получении сообщения Update обрабатывающий их метод производил синхронизацию облика с документом. Обычно это означает синхронизацию данных облика и синхронизацию изображения в окне облика. Простейший вариант такой синхронизации дает метод OnUpdate класса CView. Он состоит в отправке объектом сообщения OnDraw самому себе. Если программист не предусмотрел своего метода обработки сообщения Update, то при получении этого сообщения облик выполняет метод OnUpdate базового класса CView.



Содержание раздела