Win32 в машинных кодах


           

в прошлой статье, основной рабочей


СмещениеРазмер, байтПоле 04Описатель окна, которому предназначено сообщение 44Код сообщения 84Параметр сообщения wParam 0Ch4Параметр сообщения lParam 10h4Время отправки сообщения 14h4Координата x указателя мыши в момент посылки сообщения 18h4Координата y указателя мыши в момент посылки сообщения Как указывалось в прошлой статье, основной рабочей единицей в Windows является окно, и сообщения посылаются именно окнам. Чтобы самому послать сообщение, нужно указать описатель окна, для которого сообщение предназначено. Эта информация записывается в первое поле структуры. Параметры wParam и lParam содержат дополнительную информацию, которая специфична для каждого кода сообщения. Система добавляет также к каждому сообщению информацию о времени и координатах курсора мыши в момент отправки сообщения.

Функция GetMessageA принимет 4 параметра, которые размещаются в стеке в следующем порядке:

  1. максимальный код сообщения, который принимает функция;
  2. минимальный код сообщения, который принимает функция;
  3. описатель окна, для которого нужно получить сообщение;
  4. адрес структуры MSG, куда должно быть скопировано сообщение.


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

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

В секции данных нам потребуется лишь зарезервировать место для структуры MSG размером 28 байтов; но, поскольку мы ее разместим после строк по смещению 3020h, а после нее ничего нет, никаких изменений в файл data.txt вводить не потребуется - просто надо запомнить, что адрес структуры (после загрузки ее в память) будет 403020h. Сюда в процессе работы приложения будут копироваться сообщения системы.


Содержание  Назад  Вперед





Forekc.ru
Рефераты, дипломы, курсовые, выпускные и квалификационные работы, диссертации, учебники, учебные пособия, лекции, методические пособия и рекомендации, программы и курсы обучения, публикации из профильных изданий