Студопедия

КАТЕГОРИИ:

АвтоАвтоматизацияАрхитектураАстрономияАудитБиологияБухгалтерияВоенное делоГенетикаГеографияГеологияГосударствоДомЖурналистика и СМИИзобретательствоИностранные языкиИнформатикаИскусствоИсторияКомпьютерыКулинарияКультураЛексикологияЛитератураЛогикаМаркетингМатематикаМашиностроениеМедицинаМенеджментМеталлы и СваркаМеханикаМузыкаНаселениеОбразованиеОхрана безопасности жизниОхрана ТрудаПедагогикаПолитикаПравоПриборостроениеПрограммированиеПроизводствоПромышленностьПсихологияРадиоРегилияСвязьСоциологияСпортСтандартизацияСтроительствоТехнологииТорговляТуризмФизикаФизиологияФилософияФинансыХимияХозяйствоЦеннообразованиеЧерчениеЭкологияЭконометрикаЭкономикаЭлектроникаЮриспунденкция

Краткая характеристика базовых классов класса вид




Ниже дана очень краткая характеристика родительских классов, которые можно выбрать с помощью мастера для класса вид. Более подробные сведения об этих классах и предоставляемых ими возможностях можно получить в литературе, в частности, в работе [1].

Класс CView

Если в качестве базового для класса вид выбран класс CView, то в окно вида можно выводить как текстовые данные, так и графическую информацию (рис.8). Текст можно выводить только с использованием такого низкоуровневого средства как контекст устройства.

 

Рис.8. Приложение с окном вид, являющимся наследником класса CView

 

Содержимое окна, показанного на рис.8, формируется с помощью кода, реализованного в методе класса вид OnDraw():

void CEx03aView::OnDraw(CDC* pDC)

{

pDC->TextOut(0, 0, "Hello, world!"); 

pDC->SelectStockObject(GRAY_BRUSH);

pDC->Ellipse(CRect(0, 20, 100, 120));

}

 

В качестве примера см. проект Ex03a, прилагаемый к работе [1].

Класс CFormView

Если в качестве базового для класса вид выбран класс CFormView, то в окне вида можно размещать элементы управления так же, как и в диалоговом окне (рис.9). Таким образом, класс CFormView является весьма полезным и обладает многими свойствами диалогового окна, хотя и не является производным от CDialog. В качестве примера см. проекты Ex16a и Ex16b, прилагаемые к работе [1], а также главу 16 этой же работы.

CFormView — весьма полезный класс, обладающий многими свойствами немодального диалогового окна. Класс, производный от CFormView, как и производный от CDialog, связан с диалоговым ресурсом, определяющим параметры окна и список элементов управления. Класс, производный от CFormView, поддерживает те же DDX- и DDV-функции обмена и проверки данных, что и в классе CDialog.

Предупреждение. Если диалоговое окно для CFormView сгенерировано мастером, его свойства задаются корректно, но, создавая его самостоятельно в редакторе диалоговых окон, обязательно задайте в окне Properties следующие его свойства:

Style = Child (дочернее окно)

Border = None (без обрамления)

Visible = False (изначально невидимо).

 

Объект CFormView получает уведомляющие сообщения непосредственно от своих элементов управления, а также принимает командные сообщения от каркаса приложений. Очевидное отличие CFormView от CDialog — способность первого обрабатывать команды каркаса приложений, что упрощает управление окном представления из основного меню окна-рамки или через панель инструментов.

 

 

 

Рис.9. Приложение с окном вид, являющимся наследником класса CFormView

 

Класс CFormView — производный от CView (точнее, от CScrollView), а не от CDialog. Так что не надейтесь на присутствие функций-членов CDialog. В CFormView нет виртуальных функций OnInitDialog(), OnOK() и OnCancel(). Функции-члены класса CFormView не вызывают UpdateData() и DDX-функции. Вы сами должны заботиться о вызовах UpdateData() (обычно в ответ на уведомляющие сообщения от элементов управления или на командные сообщения).

Хотя CFormView происходит не от CDialog, он построен на основе диалогового окна Windows и поэтому Вы можете использовать многие функции-члены класса CDialog, например, GotoDlgCtrl() и NextDlgCtrl(): надо всего лишь привести тип указателя на CFormView к указателю на CDialog. Показанный ниже оператор, извлеченный из функции-члена некоего класса, производного от CFormView, устанавливает фокус на заданный элемент управления. GetDlgItem() – это CWnd-функция, поэтому класс, производный от CFormView, ее наследует.

   ((CDialog*) this)->GotoDlgCtrl(GetDlgItem(IDC_NAME));

 

Мастер ИС позволяет использовать CFormView в качестве базового для вашего класса «вид». Если Вы так и поступите, мастер сгенерирует пустое диалоговое окно с корректным набором стилей. Далее создайте обработчики уведомляющих сообщений от элементов управления, обработчики командных сообщений и сообщений обновления пользовательского интерфейса. (Подробнее об этом речь идет далее.) Кроме того, Вы можете определить переменные-члены и критерии проверки вводимых пользователем значений.

 

Класс CHtmlView

Если в качестве базового для класса вид выбран класс CHtmlView, то в окне вида можно отображать Html-страницы. Например, на рис.10 показана страница, загруженная с адреса http://www.msdn.microsoft.com/visualc/. Опять же в качестве примера см. проект Ex37a, прилагаемый к работе [1].

 

 

Рис.10. MDI-приложение с окном вид, являющимся наследником класса CHtmlView

 

Класс CListView

 

Пример использования этого класса в качестве базового для класса вид приведен на рис. 11. В качестве примера см. проект RowList, входящий в состав примеров (samples) MSDN для Visual Studio 6.0.

 

 

Рис.11. Приложение с окном вид, являющимся наследником класса CListView

 

Класс CRichEditView

Пример использования этого класса в качестве базового для класса вид приведен на рис. 12. В качестве примера см. проект WordPad, входящий в состав примеров (samples) MSDN для Visual Studio 6.0.

 

 

Рис.12. Приложение с окном вид, являющимся наследником класса CRichEditView

Класс CScrollView

Класс CScrollView отличается от класса CView только тем, что инкапсулирует скроллинг – полосы прокрутки. Пример использования этого класса в качестве базового для класса вид приведен на рис. 13. Конечно, можно и самостоятельно добавить к классу CView функции обработки сообщений OnHScroll и OnVScroll, но класс CScrollView их уже инкапсулирует и, кроме того, обрабатывает сообщения от мыши с колесом. В качестве примера см. проект DibLook, входящий в состав примеров (samples) MSDN для Visual Studio 6.0.

 

 

Рис.13. Приложение с окном вид, являющимся наследником класса CScrollView

 

 

Класс CTreeView

Класс CTreeView является наследником класса CCtrlView, который в свою очередь наследует класс CView. Пример использования этого класса в качестве базового для класса вид приведен на рис. 14. В качестве примера см. проект DaoView, входящий в состав примеров (samples) MSDN для Visual Studio 6.0.

 

 

Рис.14. Приложение с окном вид, являющимся наследником класса CTreeView

                                                                  










Последнее изменение этой страницы: 2018-04-12; просмотров: 376.

stydopedya.ru не претендует на авторское право материалов, которые вылажены, но предоставляет бесплатный доступ к ним. В случае нарушения авторского права или персональных данных напишите сюда...