Класс Cview
Класс CView реализует основные возможности для работы с отображениями. Отображения пристыковываются к документу и реализуют интерфейс между документом и пользователем: объект отображение выводит документ на экран или на принтер и интерпретирует действия пользователя как операции над документом.
Отношения между классом отображения, классом окна-рамки и классом Документа устанавливаются объектом CDocTemplate. Вызов конструктора нового отображения и сопоставление его документу выполняются при открытии пользователем нового окна и разделении существующего окна.
Один объект отображение может быть сопоставлен только одному документу, однако один документ может иметь несколько сопоставленных ему отображений.
Отображения обрабатывают сообщения, используя таблицу сообщений. J Отображения выполняют показ данных документа, но не отвечают за их
сохранение. Документ предоставляет отображению необходимую информаЗ
цию о данных посредством вызова объектом отображение методов доку|
мента.
Для внесения изменений в данные отображение, как правило, вызывает
метод CDocument::UpdateAHViews, который инициирует вызов методо!
OnUpdate для всех других отображений. По умолчанию реализация метод!
OnUpdate определяет всю клиентскую область как недостоверную. Этот ме|
тод может быть переопределен.
►Для того чтобы использовать класс отображений Cview, следует:
1. Объявить производный класс от Cview;
2. Реализовать метод OnDraw, выполняющий отображение экрана или вы| вод на печать.
Для обработки сообщений от линейки прокрутки можно использовать: I
• методы CWnd::OnHScroll и CWnd::OnVScroll;
• класс CScrollView.
Члены класса С View
CView( );
Конструктор объекта CView. Конструктор вызывается при создании нового окна-рамки или разделении существующего окна. Для инициализаций отображения сопоставленного документу следует вызвать метод OnlnitialUpdate.
BOOL DoPreparePrinting( CPrintlnfo* plnfo );
Этот метод вызывается из переопределяемого метода OnPreparePrinting для отображения диалогового окна Print и создания контекста устройства! принтера.
CDocument* GetDocument() const;
Метод возвращает указатель на объект документ сопоставленный данному отображению, или NULL, если отображение не пристыковано ни к какому документу.
Этот указатель можно использовать для вызова методов класса документа. virtual void OnInitiaIUpdate();
Метод вызывается сразу после сопоставления отображения документу, но до первого вывода отображения. По умолчанию реализация этого метода] вызывает метод OnUpdate с нулевыми значениями параметров (lHint=0,\ рНШ= NULL). Для выполнения собственных действий при инициализаций! документа следует переопределить этот метод.
virtual BOOL CView::OnScroll( UINT nScrollCode, UINT nPos, BOOL bDoScroll = TRUE );
Метод вызывается с параметром bDoScroll= TRUE в том случае, если отображение получает сообщение от линейки прокрутки. Программист должен переопределить этот метод, описав необходимые действия.
Параметры:
nScrollCode - код линейки прокрутки, состоящий их двух частей: в младшем байте указывается, как выполнять прокрутку по горизонтали, в старшем байте - по вертикали. Код линейки прокрутки как по горизонтали, так и по вертикали может указываться следующими значениями: SB_BOTTOM, SB_LINEDOWN, SBJLINEUP, SB_PAGEDOWN, SB_PAGEUP, SBJTHUMBTRACK, SB_TOP.
nPos - указывает значение текущей позиции для прокрутки, определяемой значением SBJTHUMBTRACK.
bDoScroll - при значении TRUE прокрутку отображения следует выполнить, при значении FALSE - прокрутка не выполняется. virtual void OnActivateView( BOOL bActivate, CView* pActivateView, CView* pDeactiveView );
Метод вызывается при активизации или деактивизации отображения. По умолчанию реализация этой функции состоит в установке фокуса на активизируемое отображение.
Параметры:
bActivate - указывает, активизируется или деактивизируется отображение. pActivateView - активизируемый объект отображение. pDeactiveView - деактивизируемый объект отображение. virtual void OnActivateFrame( UINT nState, CFrameWnd* pFrameWnd);
Метод вызывается при активизации или деактивизации окна-рамки, содержащего отображение.
Этот метод можно переопределить, например в классе CFormView переопределенный метод при активизации или деактивизации окна-рамки выполняет сохранение и восстановление информации об элементе управления, имеющем фокус.
Параметры:
nState - указывает на активизацию или деактивизацию окна-рамки и определяется одним из следующих значений: WA_INACTIVE - окно деактивизируется;
WA_ACTIVE - окно активизируется любым способом, кроме щелчка мыши; WA_CLICKACTTVE - окно активизируется по щелчку мыши. PFrameWnd - указатель на активизируемое окно.
virtual void OnDraw( CDC* pDC ) = 0;
Метод вызывается для выполнения таких действий, как воспроизведение изображения документа на экране, печать документа или предварительный просмотр. По умолчанию метод не предусматривает никакой реализации и должен быть переопределен.
Параметры:
pDC - указатель на контекст устройства, используемый для перерисонки изображения.
Для того чтобы определить перерисовываемую область, можно вызвать метод RectVisible контекста устройства. Метод IsPrinting контекста устройства определяет направление вывода: на экран или на принтер. virtual void OnUpdate( CView* pSender, LPARAM IHint, CObject* pHint);
Вызов этого метода инициируется при изменении отображения документа. Этот метод вызывается методом CDocuraent::UpdateAllViews и методом OnlnitialUpdate. По умолчанию реализация этого метода отмечает всю клиентскую область как недостоверную и инициирует сообщение WM_PAINT.
Параметры:
pSender - указатель на отображение.