[Back to MOUSE SWAG index] [Back to Main SWAG index] [Original]
{
(The Procedure Mouse_Check can be done shorter, but this one "remembers" a
mouseclick, so you can click the mouse, and at a later time call this
procedure and it will tell you the mouse-information!)
>----------------------------- }
PROGRAM Mouse_on_the_screen;
USES DOS,Graph;
TYPE
MouseType = RECORD
x, y, Button : Word;
RButton, LButton : Boolean;
END;
VAR
Reg : Registers;
Mouse : Mousetype;
PROCEDURE Show_Mouse;
BEGIN
Reg.AX := 1;
Intr($33,Reg);
END;
PROCEDURE Hide_Mouse;
BEGIN
Reg.AX := 2;
Intr($33,Reg);
END;
PROCEDURE SetMouseArea(XMin,YMin,XMax,YMax :Word);
BEGIN
Reg.AX := 7;
Reg.CX := XMin;
Reg.DX := XMax;
Intr($33,Reg);
Reg.AX := 8;
Reg.CX := YMin;
Reg.DX := YMax;
Intr($33,Reg);
END;
PROCEDURE Init_Mouse;
BEGIN
Reg.AX := 0;
Intr($33,Reg);
SetMouseArea(0,0,GetMaxX,GetMaxY);
Reg.AX := 4;
Reg.CX := 100;
Reg.DX := 100;
Intr($33,Reg);
END;
PROCEDURE Mouse_Check;
BEGIN
Reg.AX := 5;
Reg.BX := 1;
Intr($33,Reg);
Mouse.RButton := Reg.BX > 0;
Mouse.Button := Reg.AX;
IF Mouse.RButton THEN Mouse.Button := 2;
Mouse.X := Reg.CX;
Mouse.Y := Reg.DX;
IF NOT Mouse.RButton
THEN Begin
Reg.AX := 5;
Reg.BX := 0;
Intr($33,Reg);
Mouse.LButton := Reg.BX > 0;
Mouse.Button := Reg.AX;
IF Mouse.LButton THEN Mouse.Button := 1;
Mouse.X := Reg.CX;
Mouse.Y := Reg.DX;
End;
END;
BEGIN
{Init graphics screen here!}
Init_Mouse;
Show_Mouse;
. {You have to finish this part yourself}
. { ___ }
. { |-lorian}
Hide_Mouse;
{CloseGraph};
END.
[Back to MOUSE SWAG index] [Back to Main SWAG index] [Original]