Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
38
Добавлен:
16.02.2016
Размер:
1.98 Mб
Скачать

IHint - содержит информацию об изменениях.

pHint - указатель на объект, хранящий информацию об изменениях.

Класс CformView

Класс CFormView является базовым классом, используемым для отобра­жений, содержащих элементы управления. Он поддерживает работу с окон­ными формами и с их прокруткой (используя возможности класса CScroIlView).

Создание отображения CFormView аналогично созданию диалогового окна. ■ Для того чтобы использовать отображение CFormView, следует выполнить,-некоторые действия: 1. Разработать в редакторе диалога шаблон диалогового окна и установить

для него следующие атрибуты:

• на панели Style выбрать Child (WS_CHILD вкл.);

• на панели Border выбрать None (WS_BORDER откл.);

• снять флажок Visible (WSJVISIBLE откл.);

• снять флажок Titlebar (WS_CAPTION откл.).

2. Создать класс отображения. Для этого, находясь в редакторе ресурсов с открытым шаблоном диалогового окна, следует вызвать ClassWizard и, щелкнув на командной кнопке Add Class, выбрать в качестве класса CFormView. ClassWizard создаст производный от CFormView класс и со­поставит ему разрабатываемый шаблон диалогового окна.

3. Переопределить метод OnUpdate.

Этот метод определен в классе CView и вызывается для обновления ото­бражения окна формы1. При использовании DDX-методов можно вы­звать метод CWnd:: UpdateData(FALSE) для обновления элементов управления, расположенных в окне формы. Метод OnlnitialUpdate вы­зывается при первичной инициализации отображения. В классе CFormView этот метод переопределен таким образом, что он выполняет вызов DDX-методов, устанавливающих первоначальное значение эле­ментов управления.

4. Реализовать методы, выполняющие внесение изменений из отображе­ния в документ.

При использовании DDX-методов следует вызвать метод UpdateData для занесения изменений в переменные класса отображения, а затем, ис­пользуя значения этих переменных, вносить изменения в документ со­поставленный данному отображению.

5. При необходимости переопределить метод OnPrint.

По умолчанию класс CFormView не поддерживает функции печати до­кумента и предварительного просмотра.

6. Сопоставьте класс отображения с классом документа и окном-рамкой, используя шаблон документа.

Отметим, что для использования отображения окна формы можно не переопределять метод CView::OnDraw.

Если окно формы содержит такие элементы управления, как CSliderCtrl или CSpinButtonCtrl, то в обработчиках сообщений окна для сообщений WMJHSCROLL и WM_VSCROLL должны быть переключатели вызовов в зависимости от типа объекта, инициировавшего сообщение.

Пример:

void CMyFormView::OnHScroll( UINT nSBCode, UINT nPos, CScrollBar* pScrollBar)

{ if ( pScrollBar->IsKindOf( RUNTIME_CLASS( CScrollBar ))) { CFormView::OnHScroll( nSBCode, nPos, pScrollBar); - -} else if ( pScrollBar->IsKindOf( RUNTIME_CLASS( CSliderCtrl))) { CWnd::OnHScroll( nSBCode, nPos, pScrollBar ); } else if ( pScrollBar->IsKindOf( RUNTIME_CLASS( CSpinButtonCtrl))) { CWnd::OnHScroll( nSBCode, nPos, pScrollBar ); } }

Отображение для окна формы поддерживает работу в логической систе- 1 ме координат только в режиме МММГЕХТ.

Классы шаблонов документов

Класс CdocTemplate

Класс CDocTemplate является абстрактным классом, предоставляющим основные возможности для работы с шаблонами документов. Как правило, шаблоны документа создаются и регистрируются во время инициализации объекта приложения (в переопределяемом методе инициализации CWinApp::InitInstance для производного класса приложения).

Шаблон документа определяет отношение между тремя типами классов:

классом документа, наследуемым от Cdocument;

классом отображения, выполняющим показ данных для указанного класса документа. Класс отображения может быть наследован от клас­сов CView, CScrollView, CFormView, CEditView (класс CEditView может быть использован и напрямую);

классом окна-рамки, содержащим отображение. Для SDI-приложений этот класс наследуется от базового класса CFrameWnd, а для MDI-приложений - от базового класса CMDIChildWnd. Однако если в при­ложении не требуется переопределять поведение объекта окно-рамка, то может быть создан объект окно-рамка непосредственно базового клас­са, без объявления производных классов.

Для каждого типа документа в приложении создается отдельный шаблон документа. Например, если приложение прддерживает работу с текстовыми документами, таблицами и рисунками, то должно быть создано соответст­венно три шаблона документа - по одному для каждого типа данных.

Шаблон документа содержит следующую информацию: . Указатели на три объекта класса CRuntimeClass для объектов документа, отображения и окна-рамки, которые должны быть созданы перед созда­нием шаблона. Эти объекты класса CRuntimeClass указываются при соз­дании шаблона документа.

• ID ресурсов, используемых для каждого типа документа (например, ре­сурсы меню, пиктограммы, таблицы акселераторов).

• Информационную строку, содержащую дополнительные данные о типе до­кумента, включая имя типа документа (например, Document), расширение имени файла, а также некоторые другие данные, которые могут быть ис­пользованы для поддержки OLE, для реализации некоторого интерфейса пользователя, для стандартных средств управления файлами Windows. Если приложение является OLE-контейнером и/или сервером, то шаб­лон документа также определяет ID ресурса меню, используемого при ре­дактировании OLE-объекта на месте. Для OLE-сервера может быть опреде­лено и ID ресурса инструментальной панели. Эти дополнительные OLE ре­сурсы устанавливаются вызовом методов SetContainerlnfo или SetServerlnfo.

Класс CDocTemplate является абстрактным классом, а следовательно, не может использоваться непосредственно для создания объектов. Обычно для создания шаблонов используются его производные классы CSingleDocTemplate и CMuItiDocTemplate. Однако можно создать и свой собственный производный класс шаблона документа.

Члены класса

CDocTemplate (UINT nIDResource, CRuntimeClass* pDocClass, CRuntimeClass* pFrameClass, CRuntimeClass* pViewClass); Конструктор объекта CDocTemplate.

Параметры:

nIDResource - указывает ID ресурсов, используемых для данного типа доку­мента. Это - меню, пиктограмма, таблица акселераторов, информационная строка.

Информационная строка состоит из семи подстрок, разделенных сим­волом \п.

Пример:

II MYCALC.RC STRINGTABLE PRELOAD DISCARDABLE BEGIN // Строка, содержащая 7 подстрок (первая подстрока пустая) IDR_SHEETTYPE"\nSheet\nWorksheet\n Worksheets (*.myc)\n.myc\n MyCalcSheet\nMyCalc Worksheet" END

pDocClass - указатель на объект CRuntimeClass класса документа. pFrameClass - указатель на объект CRuntimeClass класса окна-рамки. pViewClass - указатель на объект CRuntimeClass класса отображения.

Этот метод следует использовать для динамического выделения памяти для объекта. Указатель на созданный объект следует использовать при вы­зове метода CWinApp::AddDocTemplate.

Соседние файлы в папке VC++Баженова