3028

Вывод графики в окно, Работа с таймером, ресурсами

Лабораторная работа

Информатика, кибернетика и программирование

Вывод графики в окно, Работа с таймером, ресурсами Задание: Обеспечить в новой версии приложения прорисовку изображения каждые N секунд с новыми (случайными) характеристиками местоположения и цвета изображения. Добавить в приложение следующие р...

Русский

2012-10-23

44 KB

11 чел.

Вывод графики в окно, Работа с таймером, ресурсами

Задание: Обеспечить в новой версии приложения прорисовку изображения каждые N секунд с новыми (случайными) характеристиками местоположения и цвета изображения.

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

Список сообщений, обязательных для обработки функцией главного окна: WM_PAINT, WM_DESTROY, WM_CREATE, WM_LBUTTONDOWN, WM_RBUTTONDOWN, WM_KEYDOWN, WM_TIMER, WM_COMMAND. Остальные сообщения передать на обработку стандартной оконной функции.

Методические указания

В обработке сообщения WM_PAINT удалить фрагмент, отвечающий за присвоение характеристикам изображения случайных значений. Оcтавить только обработку следующего вида
получить контекст отображения;
вызывать функцию отрисовки изображения
c его текущими характеристиками;
освободить контекст отображения.

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

Добавить возможность периодически получать сообщение о том, что заданный интервал времени (например, 5 сек) истек и приложение может выполнить какое-либо периодическое действие. Для этого сначала следует в оконной функции объявить статические целые переменные nTimer (номер таймера) и dTimer (интервал между сообщениями). При обработке сообщения WM_CREATE присвоить переменной nTimer любое целое положительное число, переменной dTimer присвоить значение 5000 (интервал в миллисекундах), и затем создать таймер с номером nTimer и интервалом dTimer (функция SetTimer).

Перед завершением работы приложения, при обработке сообщения WM_DESTROY следует удалить созданный таймер (функция KillTimer).

При обработке сообщения WM_TIMER проверить, от какого таймера (если их приложением установлено несколько) пришло сообщение.

Если сообщение пришло от таймера с номером nTimer, установленного для изменения местоположения и цвета изображения, то выполнить следующие периодически выполняемые действия:
присвоить:
 характеристикам
вида изображения (если они есть)- случайные значения;
 характеристикам
местоположения - случайные значения в пределах границ окна;
 характеристике
цвета - случайное значение цвета;
объявить всю рабочую область как недействительную (функция
InvalidateRect);
послать окну сообщение о перерисовке (функция
UpdateWindow).

Для создания файла ресурса с одним ресурсом (например, пиктограммой) следует выполнить следующий действия: выбрать меню Insert -> выбрать пункт Resourse -> отметить тип ресурса Icon -> выбрать кнопку New -> отредактировать изображение -> выбрать меню File -> выбрать пункт Save -> ввести имя нового файла resource.rc -> выбрать кнопку Save.

Одновременно с созданием файла ресурсов создается включаемый файл resource.h, содержащий определения числовых идентификаторов, используемых в файле ресурсов (по умолчанию созданной пиктограмме присваивается идентификатор
ID_ICON1, идентификаторы ресурсов можно впоследствии изменять). Этот файл необходимо включить в файл с исходным текстом приложения директивой #include, а файл resource.rc - в проект приложения.

Для подключения файла ресурсов в проект приложения следует выполнить следующие действия: выбрать меню Project -> выбрать пункт Add To Project -> выбрать пункт Files -> ввести имя файла resource.rc -> выбрать кнопку OK.

В результате в рабочем пространстве помимо закладки
FileView, позволяющей просматривать и редактировать исходные файлы проекта, появляется закладка ResourceView, при помощи которой можно просмотреть и изменить ресурсы приложения.

Для того чтобы добавить какой-либо другой ресурс, необходимо проделать практически ту же самую последовательность действий: : выбрать меню Insert -> выбрать пункт Resourse -> отметить необходимый тип ресурса  -> выбрать кнопку New -> отредактировать ресурс -> сохранить изменения.

Аналогично созданию пиктограммы с идентификатором
IDI_ICON1, создать курсор c идентификатором IDC_CURSOR1, строковый ресурс для заголовка с идентификатором IDS_STRING, таблицу акселераторов IDR_ACCELERATORS1 с акселераторами клавиш управления курсором "вверх" и "вниз" (их идентификаторы ID_FAST и ID_SLOW соответственно).

Для того чтобы в качестве пиктограммы приложения использовалась пиктограмма IDI_ICON1 из ресурсов приложения, ее следует загрузить функцией LoadIcon, полученный же дескриптор пиктограммы присвоить полю hIcon структуры типа WNDCLASS при регистрации класса окна приложения.

Для того чтобы в качестве курсора мыши при прохождении над окном приложения использовался курсор IDC_CURSOR1 из ресурсов приложения, его следует загрузить функцией LoadCursor, полученный же дескриптор курсора присвоить полю hCursor структуры типа WNDCLASS при регистрации класса окна приложения.

Для того чтобы в качестве заголовка окна приложения использовалась строка IDS_STRING1 из ресурсов приложения, ее следует загрузить функцией LoadString в символьный массив Title, а затем использовать Title в качестве заголовка при создании окна вызовом функцией CreateWindow.

Для того чтобы приложения могло обрабатывать сообщения от определенных в ресурсах акселераторов, сначала в функции WinMain следует загрузить таблицу акселераторов IDR_ACCELERATORS1 с помощью функции LoadAccelerators. Затем добавить в оконную функцию обработку сообщения WM_COMMAND.

При обработке сообщения WM_COMMAND проверить, от акселератора ли пришло сообщение. Если да, то выполнить следующую обработку сообщений от акселераторов ID_FAST и ID_SLOW:
уничтожить таймер с номером
nTimer;
в зависимости от акселератора уменьшить или увеличить значение
dTimer на 10%;
создать новый таймер с номером
nTimer и интервалом dTimer.

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


 

А также другие работы, которые могут Вас заинтересовать

20858. Штангенциркуль 218 KB
  Штангенциркуль складається із стальної лінійки штанги 5 з міліметровими поділками відносно якої переміщується рамка 4 з ноніусом і двох пар губок ніжок нерухомих 1 та рухомих 2. Різновиди штангенциркулів Цифровий штангенциркуль Отримання результатів вимірювання штангенциркулем.
20859. Макроэкономическое равновесие на товарном рынке. Кейнсианский подход 153 KB
  Методологические основы кейнсианского подхода. Компоненты совокупного спроса в кейнсианской модели. Кейнсианская функция потребления и сбережения. Теория инвестиционных решений. Равновесный уровень дохода. Модель «утечка-инъекции».
20860. Проблемы преподавания планиметрии и стереометрии через элективные курсы в школе 278.53 KB
  Перехода к профильному обучению математике в общеобразовательной школе, предусматривающей также элективные курсы по геометрии, и не разработанностью теоретических основ их проектирования; осуществления преемственности базового, профильного и элективного курсов по геометрии и отсутствием требований к отбору содержания последних...
20861. Хіміко-термічна обробка металів та сплавів 108 KB
  Мета хіміко-термічної обробки - надати поверхневому шару стальних деталей підвищеної твердості, зносостійкості, жаростійкості, корозійної стійкості та ін. Для цього нагріті деталі поміщають у середовище, з якого в процесі дифузії у поверхневий шар переходять деякі елементи (вуглець, азот, алюміній, хром, кремній, бор та ін.)
20862. Толковый словарь психиатрических терминов 1.75 MB
  В словаре представлены толкования основных терминов и понятий, наиболее часто употребляемых в современной психиатрической литературе, а также в смежных науках и областях знаний (психотерапии, неврологии, психологии, философии, физиологии и др.). Приведено лаконичное, но достаточно полное смысловое значение каждого термина
20863. Дифференциальная диагностика и лечение некоронарогенных заболеваний миокарда 279.5 KB
  Миокардит представляет собой поражение сердечной мышцы преимущественно воспалительного характера, обусловленное опосредованным через иммунные механизмы воздействием инфекции, паразитарной или протозойной инвазии, химических и физических факторов, а также возникающее при аллергических и иммунных заболеваниях.
20864. Договор дарения и специфика его применения в практической юриспруденции в условиях Российской Федерации 228.5 KB
  Совершенно ясно, что, как в теоретических, так и в практических позиций, договор уже очень давно перестал быть чем-то вторичным, вспомогательным среди воплощений права. Об этом, бесспорно, свидетельствует то обстоятельство, что договорами буквально пронизаны все сферы жизни современного общества.
20865. Учет и аудит выпуска готовой продукции (работ, услуг) 505 KB
  Целью дипломной работы является изучение операций по выпуску и оприходованию готовой продукции (работ, услуг), правилами их оценки и методикой отражения в бухгалтерском учете всех этих операций, рассмотрение порядка отражения этих операций на синтетических и аналитических счетах в бухгалтерском учете.
20866. Расчет и проект привода к пластинчатому транспартеру 2.46 MB
  В курсовом проекте проведены расчеты входных данных для проектирования привода: передаточных чисел, частот вращения, мощностей, вращающих моментов для всех валов редуктора. Проведены проектировочные и проверочные расчеты передач, валов, подшипников, муфт, шпоночных соединений, группового болтового соединения. Подобраны стандартные детали и смазка. Описана конструкция редуктора.