- •Лабораторный практикум «Основы разработки приложений Windows» Книга 2
- •Часть 1. Теоретические сведения4
- •Часть 2. Лабораторный практикум73
- •Часть 1 Теоретические сведения
- •1. Основы архитектурЫ защищенного режима Регистры процессора
- •Адресация памяти
- •2. Логические шрифты Создание логических шрифтов
- •Вывод на экран текстовых строк
- •3. Таймеры Windows Организация и обслуживание таймеров
- •Мультимедийные таймеры
- •Измерение интервалов времени
- •Организация периодического процесса
- •Задание однократного интервала времени
- •4. Дочерние окна Создание и использование дочерних окон
- •Окна предопределенных классов в главном окне
- •5. Вывод растровых изображений
- •Процедура вывода растрового изображения
- •Компоновка составных изображений
- •6. Обслуживание файлов в 32-разрядных приложениях Windows
- •Базовые операции с файлами Открытие и создание файла
- •Запись и чтение файла
- •Файлы, проецируемые в память
- •7. Процессы и потоки
- •Создание дочернего процесса
- •Создание дочернего потока
- •Синхронизация потоков Общие характеристики объектов Windows
- •Синхронизация с помощью состояний потока
- •Синхронизация с помощью событий
- •Критические секции и защита данных
- •8. Библиотеки динамической компоновки
- •Часть 2 Лабораторный практикум Работы лабораторного практикума Работа 1. Создание логических шрифтов
- •Работа 2. Таймеры Windows(индивидуальное задание а)
- •Работа 3. Дочернее окно в главном окне приложения
- •Работа 4. Вывод растровых изображений с использованием совместимой памяти
- •Работа 5. Измерение временных характеристик программы с помощью мультимедийного таймера
- •Работа 6. Вывод движущихся изображений с синхронизацией от системного таймера (индивидуальное задание b)
- •Работа 7. Повышение качества движущихся изображений с помощью совместимой памяти
- •Работа 8. Движение изображения по фоновому рисунку
- •Работа 9. Работа с файлами (индивидуальное задание c)
- •Работа 10. Стандартные диалоги Windows для работы с файлами
- •Работа 11. Проецирование файла в память
- •Работа 12. Потоки (индивидуальное задание d)
- •Работа 13. Синхронизация потоков с помощью событий
- •Работа 14. Защита данных с помощью критической секции
- •Работа 15. Библиотеки динамической компоновки
- •Работа 16. Передача параметров в функции dll-библиотек
- •Индивидуальные задания лабораторного практикума
- •Задание c2.Массив записываемых в файл данных должен представлять собой последовательный ряд из 2000 целых четных чисел.
- •Лабораторный практикум «Основы разработки приложений Windows» Книга 2
Часть 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(индивидуальное задание а)
Включите в оконную функцию обработку сообщения WM_TIMER. В функцииOnCreate()обработки сообщенияWM_CREATEустановите таймер с частотой, указанной в задании. В цветное главное окно приложения выведите фигуру, указанную в индивидуальном задании, и в каждом такте таймера изменяйте ее указанным в задании образом. Одновременно отсчитывайте в глобальной переменной число прошедших тактов и по истечении заданного числа тактов уничтожьте таймер, остановив изменение изображения.
Работа 3. Дочернее окно в главном окне приложения
Модифицируйте программу из предыдущей работы. После регистрации класса главного окна зарегистрируйте класс дочернего окна, назначив ему свою оконную процедуру и другой цвет фона. Создайте это окно в функции OnCreate(), назначив ему стильWS_CHILD|WS_DLGFRAME|WS_VISIBLE. В оконную процедуру дочернего окна включите обработку единственного сообщенияWM_PAINT, в которой выводите в это окно надпись"Осталось ... тактов"с указанием текущего числа оставшихся тактов. Для этого в каждом такте таймера преобразуйте оставшееся число тактов (хранящееся в глобальной переменной) в строку символов с помощью функцииitoa(), а затем с помощью функцийstrcpy()иstrcat()образуйте итоговую строку, выводимую в дочернее окно. Не забудьте, что в каждом такте таймера теперь надо инициировать посылку сообщенияWM_PAINTв оба окна – в главное для изменения конфигурации фигуры и в дочернее для обновления выводимого сообщения.
Работа 4. Вывод растровых изображений с использованием совместимой памяти
a.Создайте приложение с главным окном, в которое выводится нарисованный предварительно в графическом редактореPaintцветной рисунок произвольного содержания размером, например, 200200 пикселов. Содержательный алгоритм программы заключен в функциях обработки сообщенийWM_CREATEиWM_PAINT.
Состав функции OnCreate():
получение контекста окна (функция GetDC());
создание совместимой памяти с одновременной загрузкой в него изображения (функция LoadImage());
создание совместимого с окном контекста совместимой памяти (функция CreateCompatibleDC());
выбор совместимой памяти с изображением в совместимый контекст (макрос SelectBitmap());
получение характеристик объекта совместимой памяти (функция GetObject());
освобождение контекста окна (функция ReleaseDC()).
Состав функции OnPaint():
получение контекста окна (функция BeginPaint());
копирование совместимой памяти в окно (функция BitBlt();
освобождение контекста окна (функция EndPaint()).
b.Модифицируйте предыдущую программу, выведя в совместимую память, помимо загруженного в нее рисунка, дополнительные графические образы: заключите рисунок в рамку, нарисованную толстым цветным пером, и поместите в поле рисунка свою фамилию в качестве подписи. Поскольку совместимая память вместе с совместимым контекстом создается в функцииOnCreate(), все эти манипуляции можно выполнить там же. Для того чтобы рамка рисунка выглядела аккуратно, при создании пера используйте константуPS_INSIDEFRAME. Для определения размеров изображения воспользуйтесь функциейGetObjectи структурной переменной типаBITMAP.
Выполните пункт bзадания в двух вариантах: с загрузкой изображения посредством файла ресурсов и непосредственно из файла .BMP.