Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лабораторный практикум «Основы разработки приложений Windows» книга 2.DOC
Скачиваний:
91
Добавлен:
10.05.2014
Размер:
827.9 Кб
Скачать

Часть 2 Лабораторный практикум Работы лабораторного практикума Работа 1. Создание логических шрифтов

a.Создайте приложение с главным окном большого размера, покрасьте его каким-либо бледным цветом и сформируйте часть титульного листа некоторого отчета, содержащую следующие три отдельные строки:

Тема: название работы

Студент: ваша фамилия

Группа: ваша учебная группа

Строки оформите разными шрифтами. Для этого в функциии OnCreate()обработки сообщенияWM_CREATEсоздайте три логических шрифта, различающихся гарнитурами, размером и характеристиками:

  • для первой строки – шрифт Times New Roman Cyr высотой 50 пикселов;

  • для второй строки – шрифт Courier New Cyrвысотой 40 пикселов, повышенной жирности;

  • для третьей строки – шрифт Arial Cyrвысотой 40 пикселов, курсивный.

В функции OnPaint()обработки сообщенияWM_PAINTпоследовательно выбирайте в контекст устройства дескрипторы соз­данных шрифтов и выводите заданные строки. Покрасьте первую строку в красный цвет, а две другие – в синий. Все строки разместите по горизонтали по центру окна, для чего вместо функции вывода текстаTextOut()воспользуйтесь функциейDrawText()с указанием соответствующих флагов и координат.

b.Создайте четвертый шрифт с именемWingdings,Wingdings2илиWebdingsразмером 60 – 70 пикселов. С помощью таблицы символовWindowsи таблицы кодировки символов (см., например, [2], стр. 15) определите коды нескольких символов этих шрифтов и выведите их в главное окно, сформировав в программе строку этих символов в виде последовательности кодов. Не забудьте завершить строку нулем.

Работа 2. Таймеры Windows(индивидуальное задание а)

Включите в оконную функцию обработку сообщения WMTIMER. В функцииOnCreate()обработки сообщенияWM_CRE­ATEустановите таймер с частотой, указанной в задании. В цветное главное окно приложения выведите фигуру, указанную в индивидуальном задании, и в каждом такте таймера изменяйте ее указанным в задании образом. Одновременно отсчитывайте в глобальной переменной число прошедших тактов и по истечении заданного числа тактов уничтожьте таймер, остановив изменение изображения.

Работа 3. Дочернее окно в главном окне приложения

Модифицируйте программу из предыдущей работы. После регистрации класса главного окна зарегистрируйте класс дочернего окна, назначив ему свою оконную процедуру и другой цвет фона. Создайте это окно в функции OnCreate(), назначив ему стильWS_CHILD|WS_DLGFRAME|WS_VISIBLE. В оконную процедуру дочернего окна включите обработку единственного сообщенияWM_PAINT, в которой выводите в это окно надпись"Осталось ... тактов"с указанием текущего числа оставшихся тактов. Для этого в каждом такте таймера преобразуйте оставшееся число тактов (хранящееся в глобальной переменной) в строку символов с помощью функцииitoa(), а затем с помощью функцийstrcpy()иstrcat()образуйте итоговую строку, выводимую в дочернее окно. Не забудьте, что в каждом такте таймера теперь надо инициировать посылку сообщенияWM_PAINTв оба окна – в главное для изменения конфигурации фигуры и в дочернее для обновления выводимого сообщения.

Работа 4. Вывод растровых изображений с использованием совместимой памяти

a.Создайте приложение с главным окном, в которое выводится нарисованный предварительно в графическом редактореPaintцветной рисунок произвольного содержания размером, например, 200200 пикселов. Содержательный алгоритм программы заключен в функциях обработки сообщенийWM_CREATEиWM_PAINT.

Состав функции OnCreate():

  • получение контекста окна (функция GetDC());

  • создание совместимой памяти с одновременной загрузкой в него изображения (функция LoadImage());

  • создание совместимого с окном контекста совместимой памяти (функция CreateCompatibleDC());

  • выбор совместимой памяти с изображением в совместимый контекст (макрос SelectBitmap());

  • получение характеристик объекта совместимой памяти (функция GetObject());

  • освобождение контекста окна (функция ReleaseDC()).

Состав функции OnPaint():

  • получение контекста окна (функция BeginPaint());

  • копирование совместимой памяти в окно (функция BitBlt();

  • освобождение контекста окна (функция EndPaint()).

b.Модифицируйте предыдущую программу, выведя в совместимую память, помимо загруженного в нее рисунка, дополнительные графические образы: заключите рисунок в рамку, нарисованную толстым цветным пером, и поместите в поле рисунка свою фамилию в качестве подписи. Поскольку совместимая память вместе с совместимым контекстом создается в функцииOnCreate(), все эти манипуляции можно выполнить там же. Для того чтобы рамка рисунка выглядела аккуратно, при создании пера используйте константуPS_INSIDEFRAME. Для определения размеров изображения воспользуйтесь функциейGetObjectи структурной переменной типаBITMAP.

Выполните пункт bзадания в двух вариантах: с загрузкой изображения посредством файла ресурсов и непосредственно из файла .BMP.