home *** CD-ROM | disk | FTP | other *** search
- {
- Now here's the source for the Mouse-Cursor-Editor
-
- }
- PROGRAM Mouse_Edit;
- uses Crt;
- type
- Masktype = array[1..16] of word;
- var
- Cursor : Array[1..2] of Masktype;
- screenmask,Cursormask : Array [1..16,1..16] of Char;
- x,y,oldx,oldy : Byte;
- Fenster : Boolean; {False=Links,True=Rechts}
- i,j : Byte;
- c : Char;
- wert : word;
- dest : text;
- s : string;
-
- procedure Init;
- begin
- TextMode (co40);
- ClrScr;
- for i:=1 to 16 do
- for j:=1 to 16 do
- begin
- Screenmask[i,j]:='*';
- GoToXY(i+2,j);
- Write (Screenmask[i,j]);
- CursorMask[i,j]:='.';
- GoToXY (i+22,j);
- Write (CursorMask[i,j]);
- end;
- x:=8; oldx:=8; y:=8; oldy:=8;
- Fenster := false;
- GotoXY(20,20); write('X=',x:3,' Y=',y:3);
- GotoXY (x+2,y);
- end;
- procedure Changemask;
- var
- t : byte;
- begin
- t:=x; x:=oldx; oldx:=t;
- t:=y; y:=oldy; oldy:=t;
- fenster := fenster xor true;
- GotoXY(20,20); write('X=',x:3,' Y=',y:3);
- end;
- begin
- init;
- repeat
- c:=readkey;
- if c=#9 then
- ChangeMask
- else if c=#32 then
- if fenster then begin
- if cursormask[x,y]='.' then
- cursormask[x,y]:='*'
- else
- cursormask[x,y]:='.';
- write(cursormask[x,y]);
- GotoXY(wherex-1,wherey);
- end else begin
- if screenmask[x,y]='.' then
- screenmask[x,y]:='*'
- else
- screenmask[x,y]:='.';
- write(screenmask[x,y]);
- GotoXY(wherex-1,wherey)
- end else if c=#0 then begin
- c:=readkey;
- case c of
- #72 : if y > 1 then
- dec(y);
- #80 : if y < 16 then
- inc(y);
- #77 : if x<16 then
- inc(x);
- #75 : if x > 1 then
- dec(x);
- end;
- GotoXY(20,20); write('X=',x:3,' Y=',y:3);
- end;
- if fenster then
- GotoXY(x+22,y)
- else
- GotoXY(x+2,y);
- until c=#27;
- for i:=1 to 16 do begin
- wert:=0;
- for j:=1 to 16 do
- if screenmask[j,i]='*' then
- inc(wert,1 shl (16-j));
- Cursor[1,i]:=wert;
- end;
- for i:=1 to 16 do begin
- wert:=0;
- for j:=1 to 16 do
- if cursormask[j,i]='*' then
- inc(wert,1 shl (16-j));
- Cursor[2,i]:=wert;
- end;
- assign(dest,'pfeil.dat');
- rewrite(dest);
- writeln (dest,'const');
- write (dest,#7,'screenmask : masktype = (');
- for i:=1 to 16 do begin
- str(cursor[1,i],s);
- write(dest,s);
- if i<16 then
- write(dest,',');
- end;
- writeln(dest,');');
- write (dest,#7,'cursormask : masktype = (');
- for i:=1 to 16 do begin
- str(cursor[2,i],s);
- write(dest,s);
- if i<16 then
- write(dest,',');
- end;
- writeln(dest,');');
- close(dest);
- end.
-
- {
- TORSTEN PINKERT
-
- And now here's the program to test how Mouse-Edit works...
- }
- PROGRAM Mouse_Edit_Test;
- uses graph;
- type
- masktype = array[1..16] of word;
-
- {$I Pfeil.dat}
-
- var
- cursor : array[1..2] of masktype;
- gd,gm : integer;
-
- procedure ShowMouse; assembler;
- asm
- mov ax,1
- int 33h
- end; {ShowMouse}
- procedure HideMouse; assembler;
- asm
- mov ax,2
- int 33h
- end; {HideMouse}
- procedure ChangeMousePointer (x,y:integer; zeiger:word); assembler;
- asm
- mov ax,9
- mov bx,x
- mov bx,y
- mov dx,zeiger
- int 33h
- end; {ChangeMousePointer}
-
- begin
- gd:=VGA; gm := VGAHi;
- initgraph(gd,gm,'c:\bp\bgi');
- setfillstyle(solidfill,white);
- bar (200,200,400,400);
- cursor[1]:=screenmask; cursor[2]:=cursormask;
- SetBKColor(black);
- ShowMouse;
- ChangeMousePointer(8,8,ofs(cursor));
- readln;
- HideMouse;
- closegraph;
- end.