в прошлой статье, основной рабочей
СмещениеРазмер, байтПоле
0 | 4 | Описатель окна, которому предназначено сообщение |
4 | 4 | Код сообщения |
8 | 4 | Параметр сообщения wParam |
0Ch | 4 | Параметр сообщения lParam |
10h | 4 | Время отправки сообщения |
14h | 4 | Координата x указателя мыши в момент посылки сообщения |
18h | 4 | Координата y указателя мыши в момент посылки сообщения |
Как указывалось в прошлой статье, основной рабочей единицей в Windows является окно, и сообщения посылаются именно окнам. Чтобы самому послать сообщение, нужно указать описатель окна, для которого сообщение предназначено. Эта информация записывается в первое поле структуры. Параметры wParam и lParam содержат дополнительную информацию, которая специфична для каждого кода сообщения. Система добавляет также к каждому сообщению информацию о времени и координатах курсора мыши в момент отправки сообщения.
Функция GetMessageA принимет 4 параметра, которые размещаются в стеке в следующем порядке:
- максимальный код сообщения, который принимает функция;
- минимальный код сообщения, который принимает функция;
- описатель окна, для которого нужно получить сообщение;
- адрес структуры MSG, куда должно быть скопировано сообщение.
Первые три параметра образуют фильтр - GetMessageA может отбирать лишь те сообщения из очереди, которые попадают в заданный диапазон или предназначены лишь указанному окну. Если параметры максимального и минимального кодов равны нулю, из очереди извлекаются все типы сообщений. Если равен нулю параметр описателя окна, извлекаются сообщения для всех окон. Обычно первые три параметра всегда равны нулю - фильтрация сообщений не используется.
Переделаем созданное в прошлый раз приложение так, чтобы включить в него вызов функции GetMessageA. Причем сделаем это с некоторым "запасом" - оставим место (в первую очередь, в структурах для импорта) еще для 2 функций, которые нам пригодятся в дальнейшем.
В секции данных нам потребуется лишь зарезервировать место для структуры MSG размером 28 байтов; но, поскольку мы ее разместим после строк по смещению 3020h, а после нее ничего нет, никаких изменений в файл data.txt вводить не потребуется - просто надо запомнить, что адрес структуры (после загрузки ее в память) будет 403020h. Сюда в процессе работы приложения будут копироваться сообщения системы.
Содержание Назад Вперед
Forekc.ru
Рефераты, дипломы, курсовые, выпускные и квалификационные работы, диссертации, учебники, учебные пособия, лекции, методические пособия и рекомендации, программы и курсы обучения, публикации из профильных изданий