Home

Page 78
Page 78
background image

Система 71

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

Теперь давайте посмотрим на процедуру

 которая будет вызы-

ваться при наступлении системных событий.

В первой строке пойманное сообщение передается остальным ловушкам,

установленным в системе с помощью

 Если этого не сде-

лать, то другие обработчики не смогут узнать о наступившем событии,

и система будет работать некорректно.

Далее проверяется тип полученного сообщения. Нам нужно обрабатывать
событие нажатия кнопки мышки, значит, параметр code должен быть равен

HC_ACTION,

 сообщения другого типа нам нет смысла обрабатывать.

После этого мы получаем указатель на окно, сгенерировавшее событие, и

определяем, что за событие произошло. Указатель на окно можно получить

так:

 На первый взгляд, запись абсолютно не

понятная, но попробуем в ней разобраться. Основа этой записи —

Это переменная, которую мы получили в качестве последнего параметра
нашей функции ловушки

 Запись Pointer

 показывает

на то, что этот параметр — указатель, об этом говорит ключевое слово

 Значок  разыменовывает указатель, т. е. указывает на то, что надо

ВЗЯТЬ данные ПО ЭТОМУ адресу (Pointer

Данные по указанному адресу хранятся в виде структуры TMsg. Именно по-

тому мы явно указываем это —

 Ну и сам

фикатор хранится в поле hwnd указанной структуры.

Далее мы проверяем: если была нажата левая кнопка мышки и удер-

жана кнопка <Ctrl>, то в этом окне нужно убрать звездочки. Для этого

проверяется содержимое поля message все той же структуры

 ЕСЛИ ЭТО СВОЙСТВО

чит, нажата левая кнопка мыши.

После этого проверяется свойство wParam. Если в этом свойстве находится

флаг

 значит, нажата кнопка <Ctrl>. Свойство wParam — это на-

бор флагов, и в нем может быть установлено множество разных флагов,

пример флаги нажатия клавиш

 или <Shift>. Такие наборы флагов

нельзя сравнивать с помощью простого знака равенства. Для сравнения сна-

чала нужно сложить переменную со значением, которое нужно проверить

С ПОМОЩЬЮ Логического сложения and:

and

 а потом уже результат можно сравнивать простым ра-

венством.
Если нажата кнопка и удерживается <Ctrl>, то нужно убрать звездочки. Для
этого окну посылается сообщение sendMessage со следующими параметрами:

1.

 — окно, которому предназначено сообщение.


Copyright © 2020 Файлообменник files.d-lan.dp.ua

Использование любых материалов сайта возможно только с разрешения автора.