| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121 |
- Unit CoolMice;
- INTERFACE
- Type
- TMouseState = record
- Buttons : Integer;
- X,Y : Integer;
- end;
- PMouseState = ^TMouseState;
- Function InitMouse(var aMS:PMouseState):boolean;
- Procedure ShowMouse;
- Procedure HideMouse;
- Procedure GetMouseState(var aMS:TMouseState);
- Procedure SetMouseClip(x1,y1,x2,y2:integer);
- Procedure SetMouseShape(HotX,HotY : byte; Data:Pointer);
- Procedure DoneMouse;
- IMPLEMENTATION
- var
- MS : TMouseState;
- Procedure MouseHandler;far;assembler;
- asm
- mov MS.Buttons, bx
- mov MS.X, CX
- mov MS.Y, DX
- ENd;
- Procedure SetMouseHandler(EventMask:Word; Handler:Pointer);assembler;
- asm
- mov ax, 000cH
- mov cx, word ptr EventMask
- mov bx, word ptr [Handler+2]
- mov es, bx
- mov dx, word ptr [Handler]
- int 33h
- ENd;
- Procedure CloseMouseHandler(Handler:Pointer);assembler;
- asm
- mov ax, 000cH
- mov cx, 0
- mov bx, word ptr [Handler+2]
- mov es, bx
- mov dx, word ptr [Handler]
- int 33h
- ENd;
- Function InitMouse(var aMS:PMouseState):boolean;
- begin
- asm
- mov ax, 0
- int 33h
- end;
- aMS := @MS;
- { SetMouseHandler($7F,@MouseHandler);}
- InitMouse:=true;
- ENd;
- Procedure GetMouseState(var aMS:TMouseState);
- var
- b,x,y : integer;
- begin
- asm
- mov ax, 3
- int 33h
- mov word ptr b, bx
- mov word ptr x, cx
- mov word ptr y, dx
- end;
- aMs.Buttons := B;
- aMs.X := X;
- aMs.Y := Y;
- end;
- Procedure DoneMouse;
- begin
- { CloseMouseHandler(@MouseHandler);}
- end;
- Procedure ShowMouse;assembler;
- asm
- mov ax, 0001h
- int 33h
- ENd;
- Procedure HideMouse;assembler;
- asm
- mov ax, 0002h
- int 33h
- ENd;
- Procedure SetMouseClip(x1,y1,x2,y2:integer);assembler;
- asm
- mov ax, 07h
- mov cx, [x1]
- mov dx, [x2]
- int 33h
- mov ax, 08d
- mov cx, [y1]
- mov dx, [y2]
- int 33h
- end;
- Procedure SetMouseShape(HotX,HotY : byte; Data:Pointer);assembler;
- asm
- mov ax, 09h
- mov bx, word ptr [Data+2]
- mov es, bx
- mov dx, word ptr [Data]
- mov bx, word ptr [HotX]
- mov cx, word ptr [HotY]
- int 33h
- end;
- END.
|