В графическом редакторе сделать 4 изображения движущегося объекта 32х32 пикселя. Реализовать поочередное отображение их в заданной позиции в окне. При щелчке «мышью» начинается движение объекта из текущей позиции в позицию указателя «мыши» с поочередной сменой изображений для имитации фаз движения. При отрисовке используются «теневые» контексты.
Лабораторная работа 10:
Обмен сообщениями между окнами,
обработка событий ввода-вывода
Цели работы
1) Научиться передавать информацию между окнами.
Краткие теоретические сведения
При организации взаимодействия в программе может потребоваться использовать собственные сообщения, не относящиеся ни к одному из «системных» типов. Для этого предусмотрены два диапазона «пользовательских» типов сообщений — от значения WM_USER до 0x7FFF и от WM_APP до 0xBFFF. Сообщения из этих диапазонов могут использоваться прикладными программами для собственных целей.
В пределах одного приложения (одного локального оконного класса) сообщения диапазона WM_USER не требую регистрации в системе, и приложение может произвольно выбирать и использовать их. При взаимодействии между приложениями требуется предварительная регистрация сообщения в системе функцией RegisterWindowMessage(). В качестве аргумента она принимает текстовую строку, идентифицирующую сообщение (она предполагается известной обоим взаимодействующим программам), и возвращает числовой идентификатор зарегистрированного сообщения.
Кроме того, полезным может быть сообщение WM_COPYDATA — передача блока данных в памяти. Передаваемые данные упаковываются в структуру COPYDATASTRUCT.
Остальные вопросы, связанные с данной лабораторной работой, относятся к созданию и функционированию отдельных элементов управления, что было рассмотрено ранее.
Контрольные вопросы
1) Как можно передать собственное сообщение другому окну.
2) Как это сообщение может быть обработано в другом окне
3) Что такое сообщение WM_USER.
4) Регистрация собственных сообщений
5) Обработка сообщения о нажатии, передвижении и отпускании кнопок «мыши». Параметры данных сообщений.
6) Как можно создать RadioButton и CheckBox. Каким образом можно обрабатывать сообщения от данных элементов управления и изменять их состояние.
7) Как создать группу RadioButton.