|
{Maxim Vicentiu . }
{Unit demonstrativ pentru int 33h - lucrul cu mouse}
UNIT maxmouse;
INTERFACE
Function MouseStatus: boolean;
Procedure MSetDomain(x,y : word);
Procedure Show;
Procedure Hide;
Procedure MPos(var x,y : word);
Function LPressed: boolean;
Function RPressed: boolean;
Function LRelease: boolean;
Function RRelease: boolean;
Function LClick: boolean;
Function RClick: boolean;
Function MouseMoved(x, y : word): boolean;
IMPLEMENTATION
Uses crt, dos;
Function MouseStatus;
var r : registers;
begin
r.ax := $0000;
intr($33, r);{reset driver and read status}
if r.ax = 0 then MouseStatus := False
else MouseStatus := True;
end;
Procedure MSetDomain;
var r : registers;
begin
r.ax := $0007;
r.cx := 0;
r.dx := x;
intr($33, r);
r.ax := $0008;
r.cx := 0;
r.dx := y;
intr($33, r)
end;
Procedure Show;
var r : registers;
begin
r.ax := $0001;
intr($33, r)
end;
Procedure Hide;
var r : registers;
begin
r.ax := $0002;
intr($33, r)
end;
Procedure MPos(var x,y : word);
var r : registers;
begin
r.ax := $0003;
intr($33, r);
x := r.cx;{coloana}
y := r.dx
end;
Function LPressed;
var r : registers;
begin
r.ax := $0005;
r.bx := $0000;
intr($33, r);
r.ax := r.ax and $0001;
if r.ax=1 then LPressed := True else LPressed := False
end;
Function RPressed;
var r : registers;
begin
r.ax := $0005;
r.bx := $0001;
intr($33, r);
r.ax := r.ax and $0002;
if r.ax=2 then RPressed := True else RPressed := False
end;
Function LRelease;
var r: registers;
begin
r.ax := $0006;
r.bx := $0000;
intr($33, r);
r.ax := r.ax and $0001;
if r.ax=1 then LRelease := False else LRelease := True
end;
Function RRelease;
var r: registers;
begin
r.ax := $0006;
r.bx := $0001;
intr($33, r);
r.ax := r.ax and $0002;
if r.ax=2 then RRelease := True else RRelease := False
end;
Function LClick;
begin
LClick := False;
if LPressed then begin
delay(15);
if LRelease then LClick := True
end
end;
Function RClick;
begin
RClick := False;
if RPressed then begin
delay(15);
if RRelease then RClick := True
end
end;
Function MouseMoved;
var r : registers;
begin
r.ax := $0003;
intr($33, r);
if ((r.cx<>x) or (r.dx<>y)) then MouseMoved := TRUE else MouseMoved :=
False
end;
end.
|