Студопедия КАТЕГОРИИ: АвтоАвтоматизацияАрхитектураАстрономияАудитБиологияБухгалтерияВоенное делоГенетикаГеографияГеологияГосударствоДомЖурналистика и СМИИзобретательствоИностранные языкиИнформатикаИскусствоИсторияКомпьютерыКулинарияКультураЛексикологияЛитератураЛогикаМаркетингМатематикаМашиностроениеМедицинаМенеджментМеталлы и СваркаМеханикаМузыкаНаселениеОбразованиеОхрана безопасности жизниОхрана ТрудаПедагогикаПолитикаПравоПриборостроениеПрограммированиеПроизводствоПромышленностьПсихологияРадиоРегилияСвязьСоциологияСпортСтандартизацияСтроительствоТехнологииТорговляТуризмФизикаФизиологияФилософияФинансыХимияХозяйствоЦеннообразованиеЧерчениеЭкологияЭконометрикаЭкономикаЭлектроникаЮриспунденкция |
Краткая характеристика базовых классов класса вид
Ниже дана очень краткая характеристика родительских классов, которые можно выбрать с помощью мастера для класса вид. Более подробные сведения об этих классах и предоставляемых ими возможностях можно получить в литературе, в частности, в работе [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 получает уведомляющие сообщения непосредственно от своих элементов управления, а также принимает командные сообщения от каркаса приложений. Очевидное отличие 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; просмотров: 420. stydopedya.ru не претендует на авторское право материалов, которые вылажены, но предоставляет бесплатный доступ к ним. В случае нарушения авторского права или персональных данных напишите сюда... |