TURBO PASCAL

Новости

Программы   

Turbo Pascal 

Игры

Документация   

Странности

FAQ

Ссылки

Форум

Гостевая книга

Рассылка

Благодарности

Об авторе

 

 

4.2.9. Обработка событий от мыши

В интерфейсной части модуля F_Mouse определены три процедуры, с помощью которых пользователь может установить собственную процедуру обработки событий от мыши, изменить эту процедуру на новую или сбросить ее. Кроме того, в теле модуля имеется внутренняя процедура MouseHandler, реализующая интерфейс между драйвером мыши и процедурой пользователя. Эта процедура является фактическим обработчиком событий от мыши: при возникновении условий вызова драйвер мыши передает управление именно ей. Процедура MouseHandler проверяет корректность вызова (ненулевое значение адреса процедуры пользователя) и обеспечивает нужный формат вызова последней, Для использования процедур этого раздела программист должен подготовить собственную процедуру с заголовком, соответствующим такому формату:

type

MouseHandlerType =

Procedure (Mask,Buttons,X,Y,DX,DY: Integer);

Здесь Mask — условие вызова процедуры; Buttons — состояние клавиатуры в момент вызова; X,Y — координаты положения мыши; DX,DY — общее количество шагов мыши в горизонтальном (DX) и вертикальном (DY) направлениях.

Условие вызова процедуры пользователя определяется состоянием разрядов параметра Mask по такому соглашению:

• бит 1 — вызов при нажатии левой кнопки мыши;

• 2 — при нажатии правой кнопки;

• 3 — при нажатии средней кнопки;

• 4 — при отпускании левой кнопки;

• 5 — при отпускании правой кнопки;

• 6 — при отпускании средней кнопки.

Если параметр Mask имеет значение 0, драйвер не вызывает процедуру пользователя.

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

Процедура SetMouseHandler. Извещает драйвер о необходимости передачи управления процедуре пользователя. Заголовок:

Procedure SetMouseHandler(Mask: Word; Proc: MouseHandlerType). Здесь Mask — условие вызова; Proc — процедура пользователя.

Процедура ChanqeMouseJiandler. Заменяет ранее объявленную процедуру пользователя на новую. Заголовок:

Procedure ChangeMouseHandler (Mask: Word; Proc:

MouseHandlerType; var OldMask: Word; var OldProc: Pointer).

Процедура возвращает в переменной OldMask условие вызова, а в OldProc — адрес ранее установленной процедуры пользователя.

Процедура ClearMouseHandler. Удаляет ранее установленный обработчик событий от мыши. Заголовок:

Procedure ClearMouseHandler.

Если к моменту обращения к этой процедуре была объявлена процедура пользователя (с помощью вызова SetMouseHandler), драйвер перестает ее вызывать.

 

Глава 4

Оглавление

На первую страницу

Rambler's Top100 Rambler's Top100
PROext: Top 1000

(с)Все права защищены

По всем интересующим вопросам прошу писать на электронный адрес

Hosted by uCoz