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; {Правая кнопка}