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

Работа 8. Движение изображения по фоновому рисунку

Найдите в каталогах Windowsкакой-либо рисунок размером 256256 пикселов (например, Лес.bmpили Чешуя.bmp) и скопируйте его в свой рабочий каталог. Увеличьте размер главного окна на 8 пикселов по горизонтали и на 26 пикселов по вертикали для компенсации толщины рамок и строки заголовка (чтобы размер собственно рабочей области окна точно соответствовал размеру фонового рисунка).

В функции OnCreate()вместо создания одной пустой области совместимой памяти размером 256256 пикселов, как это делалось в работе 7, образуйте две таких области, одновременно загрузив и в ту, и в другую рисунок из файла .bmp. Одна из этих областей будет служить источником фонового рисунка, а другая использоваться как рабочая; в ней будет формироваться движущееся изображение. Для каждой из областей совместимой памяти предусмотрите свой совместимый контекст и выберите в эти контексты дескрипторы соответствующих областей. Далее, как и в предыдущей работе, выберите в контекст рабочей совместимой памяти дескрипторы прозрачного пера и цветной яркой кисти, освободите контекст окна и установите таймер.

В функции OnTimer()вместо закрашивания рабочей совместимой памяти черным цветом, как это делалось в предыдущей работе, скопируйте в нее функциейBitBlt()фоновый рисунок из фоновой совместимой памяти, после чего нарисуйте новое (сдвинутое) изображение и инициируйте посылку в главное окно сообщенияWM_PAINT.

Функция OnPaint()не претерпевает никаких изменений; в ней осуществляется копирование рабочей совместимой памяти (фон плюс наша фигура) в окно приложения.

Работа 9. Работа с файлами (индивидуальное задание c)

Составьте программу, которая с помощью 32-разрядных функций работы с файлами CreateFile(),WriteFile(),SetFilePointer()иReadFile()выполняет базовые операции с файлами, именно: создание нового файла, запись в него данных и их контрольное чтение. Зарезервируйте в памяти массив и заполните его в цикле данными, указанными в индивидуальном задании. Создайте файл с произвольным именем и расширением. Выведите созданный массив в файл. С помощью функцииSetFilePointer() установите указатель на начало файла и прочитайте созданный файл в другой, пустой, массив такого же размера. Выведите для контроля в окно сообщения два-три элемента этого массива. Программа состоит из одной функцииWinMain()без каких-либо окон или элементов управления (кроме окна вывода сообщения).

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

Работа 10. Стандартные диалоги Windows для работы с файлами

Составьте программу, которая вызовом стандартного диалога Windows “Открытие файла” позволяет найти на диске нужный файл, после чего открывает этот файл и читает из него данные в предусмотренный в программе пустой массив. Выведите для контроля в окно сообщения несколько элементов этого массива. Прочитайте созданный в предыдущей работе файл и убедитесь в правильном функционировании программы.

Стандартный диалог Windows “Открытие файла” создается вызовом функции GetOpenFileName(), в качестве параметра которой указывается адрес созданной в программе структурной переменной типаOPENFILENAME. Эту структуру необходимо предварительно обнулить, а затем заполнить в ней по меньшей мере следующие элементы:

lStructSize

lpstrFilter

lpstrFile

nMaxFile

В элемент lpstrFilterпомещается адрес строки, содержащей фильтр и имеющей, например, такой вид (если открываемый файл имеет расширение .DAT):

char str[]="Файлы данных (*.DAT)", "*.DAT",

"Все файлы (*.*)","*.*", "";

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