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

       

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


Следующим классом приложения single является класс окна просмотра документа CSingleView. Этот класс наследуется от базового класса CView библиотеки MFC. Определение и реализация этого класса находятся в файлах singleView.h и singleView.cpp.

Окно просмотра и связанный с ним класс окна просмотра документа создается шаблоном документа в процессе работы приложения. Поэтому необходимо, чтобы объекты класса CSingleView можно было создавать динамически.

Для этого определяется конструктор класса, не имеющий параметров, а в определении класса указывается макрокоманда DECLARE_DYNCREATE, а в файле реализации - макрокоманда IMPLEMENT_DYNCREATE.

Таблица сообщений класса. Непосредственно перед таблицей сообщений класса CSingleView (singleView.cpp) находится макрокоманда INPLEMENT_DYNCREATE. В таблице указываются обработчики сообщений от пунктов меню для печати ID_FILE_PRINT, ID_FILE_PRINT_DIRECT и ID_FILE_PRINT_PREVIEW.

Конструктор и деструктор класса. Конструктор класса CSingleView, созданный MFC AppWizard, не содержит команд. Можно доработать его, чтобы конструктор выполнял инициализацию, связанную с окном просмотра.

Вместе с конструктором класса CSingleView MFC AppWizard определяет деструктор ~CSingleView. Сразу после создания проекта деструктор не выполняет никаких действий. В дальнейшем можно использовать его совместно с конструктором CSingleView.

Метод GetDocument. Этот метод возвращает указатель на документ, связанный с данным окном просмотра. Если окно просмотра не связано ни с каким документом, метод возвращает значение NULL.

Метод PreCreateWindow. Виртуальный метод PreCreateWindow определен в классе CWnd. Он вызывается непосредственно перед созданием окна, связанного с объектом класса. В качестве параметра этому методу передается структура типа CREATESTRUCT, определяющая характеристики создаваемого окна. Приложение может изменить данные, записанные в этой структуре, чтобы повлиять на внешний вид создаваемого окна.

Метод OnDraw. Это метод вызывается, когда надо отобразить документ в окне.
В качестве параметра pDC методу OnDraw передается указатель на контекст устройства, используя который надо отобразить документ.

В зависимости от ситуации метод OnDraw вызывается для отображения документа в окне просмотра, вывода на печать и предварительного просмотра документа перед печатью. Контекст устройства в каждом случае используется разный.

Используя контексты устройства, переданные параметром pDC, можно вызывать различные методы графического интерфейса, чтобы отобразить информацию в окне.

В том случае, если внешний вид документа при выводе на его печать должен отличаться от вывода в окно, можно вызвать метод IsPrinting контекста устройства, чтобы определить, для чего вызывается OnDraw. Метод IsPrinting возвращает не нулевое значение, если объект контекста, для которого он вызывается, является контекстом принтера. Если контекст представляет другое устройство отображения, например окно, то метод IsPrinting возвращает нуль.

В строке метода OnDraw MFC AppWizard вставляет строку, которая служит для получения указателя pDoc на документ, связанный с данным окном просмотра. Предполагается, что используя указатель pDoc, можно получить данные из документа и отобразить их на экране.



Методы OnPrepare, OnBeginPrinting и OnEndPrinting.
Виртуальные методы OnPrepare, OnBeginPrinting и OnEndPrinting, определенные в классе CView, вызываются, если пользователь желает распечатать документ, отображенный в данном окне просмотра.

Метод OnPreparePrinting вызывается перед печатью документа. OnBeginPrinting используется для получения шрифтов и других ресурсов GDI. Метод OnEndPrinting используется для освобождения ресурсов, полученных методом OnBeginPainting.



Методы AssertValid и Dump.
На время отладки приложения в состав класса CSingleView включаются переопределения виртуальных методов AssertValid и Dump. Эти методы определены в базовом классе CObject и используются при отладке приложения. При окончательном построении приложения эти методы не переопределяются.


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