100 Глава 4

4.2. МОДУЛЬ F_MOUSE

Все подпрограммы модуля F_Mouse (их около сорока) в функциональном отношении делятся на несколько групп — подпрограммы инициации мыши, обслуживания координат и т.д. Основную их часть составляют подпрограммы низкого уровня, реализующие интерфейс между описанными в п.4.1 функциями драйвера мыши и программой на Турбо Паскале.

В модуль включены также процедуры и функции, облегчающие разработку программ, рассчитанных одновременно на работу и с мышью, и с клавиатурой. Для их использования программист должен определить так называемые элементы выбора — прямоугольные участки экрана, выбор которых с помощью мыши. порождает генерацию расширенных кодов заранее обусловленных клавиш.

Полный текст модуля приведен в прил.П5.

4.2.1. Глобальные константы, типы и переменные

Для описания элементов выбора, используемых в подпрограммах эмуляции клавиатуры, в модуле определен следующий тип:

type

MouseItemType = record

X1,Y1,X2,Y2: Integer; {Координаты области)

Butt: Word; {Условие выбора}

Key : Word {Расширенный код клавиши}

end;

Условием выбора является нажатие одной из кнопок мыши в момент, когда указатель находится в границах элемента. Это условие кодируется в поле Butt как признак нужной кнопки.

Для указания процедуры, получающей управление непосредственно от драйвера в момент наступления нужного события, определен такой процедурный тип:

type

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

Формальным параметрам процедуры придается следующий смысл:

Mask — маска вызова процедуры;

Buttons — состояние кнопок мыши;

X,Y — горизонтальная и вертикальная координаты указателя;

DX, DY — полное количество шагов перемещения по горизонтали (DX) и вертикали (DY).

Д^я указания той или иной кнопки могут использоваться следующие константы:

const

LeftButton = 1; (Левая кнопка} RightButton =2; {Правая кнопка}