Студопедия

КАТЕГОРИИ:

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

Шаг 2. Выполните компиляцию и компоновку сгенерированного кода.




Вы можете собрать приложение, выбрав команду Build DRW из меню Build или щелкнув кнопку Build на панели управления. Если сборка прошла успешно, то в подкаталоге Debug каталога DRW будет создан исполняемый файл DRW.exe. Файлы .obj и другие промежуточные файлы также помещаются в каталог Debug. Сравните структуру каталогов на диске со структурой вкладки Solutuion Explorer окна решений. Вкладка Solutuion Explorer содержит логическое представление проекта. Заголовочные файлы располагаются в разделе Header Files, хотя физически они хранятся в том же подкаталоге, что и файлы .cpp. Файлы ресурсов хранятся в подкаталоге \res.

Шаг 3. Протестируйте полученное приложение.

Запустите приложение на выполнение с помощью команды F5. Поэкспериментируйте с программой. Она мало на что способна, не так ли? (Но можно ли ожидать большего, не написав ни одной строки кода?) На самом деле, как Вы, вероятно, догадываетесь, у программы много возможностей, просто они еще не активизированы. Закончив эксперименты, закройте окно программы.

Шаг 4. Просмотрите исходные тексты программы.

На вкладке Solution Explorer выберите по очереди все файлы типов .h и .cpp и ознакомьтесь с их содержимым. Теперь перейдите на вкладку Class View, выберите, например, класс CDRWView и раскройте содержимое этой ветви. Так Вы сможете просмотреть родительские классы CDRWView, а также член-функции и член-данные каждого из классов.

Класс CDRWView

Класс CDRWView сгенерирован мастером и специфичен для приложения DRW. (Как ВЫ уже догадались, мастер MVS строит имена классов на основе имени проекта, заданного Вами в его первом диалоговом окне.) Класс CDRWView находится внизу длинной цепочки наследования классов библиотеки MFC, как Вы могли видеть ранее на вкладке Class View. Наиболее важные базовые классы CDRWView – CWnd и CView. CWnd придает CDRWView свойства окна, a CView обеспечивает связь с остальными частями каркаса приложения, в частности, с документом и окном-рамкой приложения.

Рисование внутри окна представления: Windows GDI

Теперь Вы готовы к тому, чтобы написать код, который будет рисовать в окне представления. Вы внесете несколько изменений непосредственно в исходный текст DRW.

Функция-член OnDraw

Конкретнее, Вам понадобится наполнить реализацию функции OnDraw() в DRWView.cpp некоторым кодом. OnDraw() – это виртуальная функция-член класса CView, которую каркас приложения вызывает всякий раз, когда необходимо перерисовать окно представления. Перерисовка требуется, когда пользователь изменил размеры окна или открыл ранее невидимые его части, либо если само приложение изменило содержимое окна. В первых двух случаях OnDraw() вызывается каркасом приложения автоматически; однако, если данные окна изменены функцией внутри вашей программы, эта функция должна уведомить Windows об изменениях, вызвав унаследованную классом «вид» функцию-член Invalidate() (или InvalidateRect()). Код Invalidate() впоследствии вызовет OnDraw().

Хотя внутри окна можно рисовать всегда, рекомендуется позволять ему накапливать изменения и обрабатывать их все вместе при вызове функции OnDraw(). В этом случае программа сможет реагировать как на события, сгенерированные ею самой, так и на события, сгенерированные Windows, например, изменение размеров окна.

Контекст устройства в Windows

Windows не разрешает прямой доступ к аппаратуре дисплея, а взаимодействует с ней посредством абстракции под названием «контекст устройства» (device context), который связан с окном. В библиотеке MFC контекст устройства представлен в виде объекта класса C++ с именем CDC, который передается OnDraw() как параметр (посредством указателя). Имея указатель на CDC, Вы можете воспользоваться множеством функций класса CDC для рисования.

Добавление кода рисования в программу DRW

Теперь напишем код, рисующий внутри окна представления текст и круг. Чтобы найти функцию OnDraw(), можно воспользоваться вкладкой ClassView (выберите и дважды щелкните OnDraw()) либо открыть исходный файл DRWView.cpp из FileView и отыскать функцию в тексте.

 

Шаг 5. Отредактируйте функцию OnDraw()  в DRWView.cpp.

Сгенерированная мастером функция OnDraw()выглядит так:.

void CDRWView::OnDraw(CDC* /*pDC*/)

{

CDRWDoc* pDoc = GetDocument();

ASSERT_VALID(pDoc);

if (!pDoc) return;

//Доделать: добавьте код отображения своих данных

 

Обратите внимание, что имя параметра функции pDC мастер закомментировал, так как в заготовке функции он не используется. Не забудьте удалить этот комментарий.

Отредактируйте код функции следующим образом:

 

 

Вызов GetDocument()можно спокойно удалить вместе с другими операторами, содержащими ссылки на переменную pDOC, поскольку пока мы не собираемся работать с классом документ. Функции TextOut, SelectStockObject и Ellipse — члены класса контекста устройства CDC каркаса приложения. Функция Ellipse рисует круг, если длина ограничивающего прямоугольника равна его ширине.

Для работы с прямоугольниками библиотека MFC предоставляет удобный класс CRect. Временный объект CRect — параметр, который задает ограничивающий прямоугольник для функции рисования эллипса. Класс CRect будет использоваться в примерах довольно часто.

 


Шаг 6. Перекомпилируйте и протестируйте приложение DRW.

Постройте приложение и, если нет ошибок компиляции, снова запустите программу. Теперь у Вас есть программа, работа которой сразу же видна! Попробуйте изменить размер окна программы, свернуть и восстановить окно. Изображение в окне не исчезает?










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

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