unit mouse;
interface
uses dos;
function InitMouse : boolean; {инициализация мыши}
function GetMouse(var MouseX,MouseY : word) : word;
{запрос положения курсора и состояния клавиш мыши}
procedure SetMouse(MouseX, MouseY: word);
{установка положения курсора мыши}
procedure SetMouseRange(X1,Y1,X2,Y2: word);
{установка границ перемещения курсора мыши}
implementation
function InitMouse : boolean; {инициализация мыши}
var
CPU_Reg : registers;
begin
CPU_Reg.Ax := 0;
Intr($33,CPU_Reg);
InitMouse := CPU_Reg.Ax = $ffff;
end;
function GetMouse(var MouseX,MouseY : word) : word;
{запрос положения курсора и состояния клавиш мыши}
var
CPU_Reg : registers;
begin
CPU_Reg.Ax := 3;
Intr($33,CPU_Reg);
with CPU_Reg do begin
MouseX := Cx;
MouseY := Dx;
GetMouse := Bx;
end;
end;
procedure SetMouse(MouseX, MouseY: word);
{установка положения курсора мыши}
var
CPU_Reg : registers;
begin
with CPU_Reg do begin
Ax := 4;
Cx := MouseX;
Dx := MouseY;
end;
intr($33,CPU_Reg);
end;
procedure SetMouseRange(x1,y1,x2,y2: word);
{установка границ перемещения курсора мыши}
var
CPU_Reg : registers;
begin
with CPU_Reg do begin
Ax := 7;
Cx := x1;
Dx := x2;
end;
intr($33,CPU_Reg);
{функция 7 - установка горизонтальных границ}
with CPU_Reg do begin
Ax := 8;
Cx := y1;
Dx := y2;
end;
intr($33,CPU_Reg);
{функция 8 - установка вертикальных границ}
end;
end.