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.