Kirjautuminen

Haku

Tehtävät

Keskustelu: Koodit: Hiiri-funktio Turbo Pascal 6:lle

JoreSoft [26.06.2004 13:34:26]

#

Funktiolla on mahdollisuus käyttää hiirtä omassa ohjelmassa.

      FUNCTIONS                         FUNCTION NUMBER

  Base FUNCTIONS

  Mouse Initialization                      0
  Show Cursor                               1
  Hide Cursor                               2
  Get Mouse Position & Button Status        3
  Set mouse Cursor Position                 4
  Get Button Press Information              5
  Get Button Release Information            6
  Set Minimum & Maximum X Position          7
  Set Minimum & Maximum Y Position          8
  Define Graphics Cursor Block              9
  Define Text Cursor                        10
  Read Mouse Motion Counters                11
  Define Ecent Handler                      12
  Light Pen Emulation Mode On               13
  Light Pen Emulation Mode Off              14
  Set Mouse Motion/Pixel Ratio              15
  Condition Off                             16
  Set Double-Speed Threshold                19

Sama Suomeksi

  Alustaa Hiiriajurin                       0
  Hiirikursori näkyy                        1
  Hiirikursori pois                         2
  Lukee hiiren paikan ja nappien tilan      3
  Asetetaan hiiren paikka                   4
  Lukee tietoa napin painamisesta           5
  Lukee tietoa napin vapauttamisesta        6
  Asetetaan X:n suurin ja pienin arvo       7
  Asetetaan Y:n suurin ja pienin arvo       8
  Määritellään grafiikkahiirikursori        9
  Määritellään hiiren tekstikursori         10
  Lukee hiirien liike laskurin              11
  Määritellään hiirikursorin nopeus         15
  Määritellään hiirikursorin näkyvä alue    16
  Määritellään hiirikursorin rajanopeus     19
unit Mouse;

INTERFACE

uses dos,Graph;

const
      LeftButton  = 1;
      RightButton = 2;

var  Regs : Registers;
  Button1,Button2,MouseX,MouseY,
  ButtonStatus,
  NumOfButtonPressed,
  NumOfButtonRelease,
  HorizCount,
  VertCount
    :integer;

Procedure InitMouse;                                            { 0 }
Procedure ShowCursor;                                           { 1 }
Procedure HideCursor;                                           { 2 }
Procedure ReadMouse;                                            { 3 }
Procedure WaitOff1;
Procedure WaitOff2;
Procedure WaitOff1and2;
Procedure WaitOff1or2;
Procedure WaitOn1;
Procedure WaitOn2;
Procedure WaitOn1and2;
Procedure WaitOn1or2;
Procedure SetMouseCursorPosition(CX,DX:integer);                { 4 }
Procedure GetButtonPressInfo(Button:integer);                   { 5 }
Procedure GetButtonReleaseInfo(Button:integer);                 { 6 }
Procedure SetMinMaxPosX(Min,Max : integer);                     { 7 }
Procedure SetMinMaxPosY(Min,Max : integer);                     { 8 }
Procedure DefineGraphCursorBlock(Xspot,Yspot,Pointer:integer);  { 9 }
Procedure DefineTextCursor(Select,ScreenMask,CursorMask:integer);{ 10 }
Procedure ReadMouseMotionCount;                                 { 11 }
Procedure DefineEventHandler(CallMask,Address:integer);         { 12 }
Procedure EnableLightPen;                                       { 13 }
Procedure DisableLightPen(Xnew,Ynew:integer);                   { 14 }
Procedure SetMouseMotionPixelRatio(Xstep,Ystep:integer);        { 15 }
Procedure ConditionalOff(Left,Top,Right,Bottom:integer);        { 16 }
Procedure SetDoubleSpeedThreshold(Th:integer);                  { 19 }
Procedure TextMouse;

IMPLEMENTATION

Procedure Call;Begin intr(51,regs); end;

{<<< Alustetaan Hiiri >>>}
Procedure InitMouse;
var a : word;
Begin
  regs.AX:=0;
  Call;
  a:=regs.ax;
  If a = 0 Then
  Begin
    RestoreCrtMode;
    writeln('Error: Mouse not installed.');
    halt(1);
  end;
end;

{<<< Näytä Kursori >>>}
procedure ShowCursor;
Begin
  regs.AX:=1;
  Call;
end;

{<<< Poista kursori >>>}
procedure HideCursor;
Begin
  regs.AX:=2;
  Call;
end;
{<<< Luetaan hiiren parametrit >>>}
Procedure ReadMouse;
Begin
  regs.AX:=3;
  Call;
  MouseX:=Regs.CX;
  MouseY:=Regs.DX;
  Button1:=(Regs.BX and 1);
  Button2:=(Regs.BX and 2) shr 1;
end;
{<<< Odotetaan että nappi1 on vapaa >>>}
Procedure WaitOff1;
Begin
  REPEAT READMOUSE UNTIL BUTTON1=0;
end;
{<<< Odotetaan että nappi2 on vapaa >>>}
Procedure WaitOff2;
Begin
  REPEAT READMOUSE UNTIL BUTTON2=0;
end;
{<<< Odotetaan että nappi1 ja nappi2 on vapaa >>>}
Procedure WaitOff1and2;
Begin
  REPEAT READMOUSE UNTIL (BUTTON1=0) AND (BUTTON2=0);
end;
{<<< Odotetaan että nappi1 tai nappi2 on vapaa >>>}
Procedure WaitOff1or2;
Begin
  REPEAT READMOUSE UNTIL (BUTTON1=0) or (BUTTON2=0);
end;
{<<< Odotetaan että nappi1 on päällä >>>}
Procedure WaitOn1;
Begin
  REPEAT READMOUSE UNTIL BUTTON1=1;
end;
{<<< Odotetaan että nappi2 on päällä >>>}
Procedure WaitOn2;
Begin
  REPEAT READMOUSE UNTIL BUTTON2=1;
end;
{<<< Odotetaan että nappi1 ja nappi2 on päällä >>>}
Procedure WaitOn1and2;
Begin
  REPEAT READMOUSE UNTIL (BUTTON1=1) AND (BUTTON2=1);
end;
{<<< Odotetaan että nappi1 tai nappi2 on päällä >>>}
Procedure WaitOn1or2;
Begin
  REPEAT READMOUSE UNTIL (BUTTON1=1) or (BUTTON2=1);
end;

{<<< Asetetaan hiirikursorin paikka >>>}
Procedure SetMouseCursorPosition(cx,dx:integer);
Begin
  Regs.Ax:=4;
  Regs.CX:=CX;
  Regs.DX:=DX;
  Call;
end;

{<<< Luetaan tietoa napin painamisesta >>>}
Procedure GetButtonPressInfo(Button:integer);
Begin
  Regs.Ax:=5;
  Regs.Bx:=Button;
  Call;
  ButtonStatus:=0;
  if (Regs.AX and 1)=1 then ButtonStatus:=LeftButton;
  if (Regs.AX and 2)=2 then ButtonStatus:=RightButton;
  NumOfButtonPressed :=Regs.BX;
  MouseX :=Regs.CX;
  MouseY :=Regs.DX;
end;

{<<< Luetaan tietoa napin vapauttamisesta >>>}
Procedure GetButtonReleaseInfo(Button:integer);
Begin
  Regs.AX:=6;
  Regs.BX:=Button;
  Call;
  ButtonStatus:=0;
  if (Regs.AX and 1)=1 then ButtonStatus:=LeftButton;
  if (Regs.AX and 2)=2 then ButtonStatus:=RightButton;
  NumOfButtonRelease :=Regs.BX;
  MouseX :=Regs.CX;
  MouseY :=Regs.DX;
end;

{<<< Asetetaan Minimi&Maksimi X-koordinaatit >>>}
Procedure SetMinMaxPosX(Min,Max : integer);
Begin
  Regs.AX:=7;
  Regs.CX:=Min;
  Regs.DX:=Max;
  Call;
end;

{<<< Asetetaan Minimi&Maksimi Y-koordinaatit >>>}
Procedure SetMinMaxPosY(Min,Max : integer);
Begin
  Regs.AX:=8;
  Regs.CX:=Min;
  Regs.DX:=Max;
  Call;
end;

{<<< Määritellään grafiikkahiirikursori >>>}
Procedure DefineGraphCursorBlock(Xspot,Yspot,Pointer:integer);
Begin
  Regs.AX:=9;
  Regs.BX:=Xspot;
  Regs.CX:=Yspot;
  Regs.DX:=Pointer;
  Call;
end;

{<<< Määritellään teksti kursori >>>}
Procedure DefineTextCursor(Select,ScreenMask,CursorMask:integer);
Begin
  Regs.AX:=10;
  Regs.BX:=Select;
  Regs.CX:=ScreenMask;
  Regs.DX:=CursorMask;
  Call;
end;

{<<< Luetaan hiiren liikelaskuri >>>}
Procedure ReadMouseMotionCount;
Begin
  Regs.AX:=11;
  Call;
  HorizCount:=Regs.CX;
  VertCount :=Regs.DX;
end;

Procedure DefineEventHandler(CallMask,Address:integer);
Begin
  Regs.AX:=12;
  Regs.CX:=CallMask;
  Regs.DX:=Address;
  Call;
end;

{<<< Valokynän emulointi on >>>}
Procedure EnableLightPen;
Begin
  Regs.AX:=13;
  Call;
end;

{<<< Valokynän emulointi pois >>>}
Procedure DisableLightPen(Xnew,Ynew:integer);
Begin
  Regs.AX:=14;
  Regs.CX:=Xnew;
  Regs.DX:=Ynew;
  Call;
end;

{<<< Määritellään hiirikursorin nopeus >>>}
Procedure SetMouseMotionPixelRatio(Xstep,Ystep:integer);
Begin
  Regs.AX:=15;
  Regs.CX:=Xstep;
  Regs.DX:=Ystep;
  Call;
end;

{<<< Määritellään hiirikursorin alue jossa hiiri näkyy >>>}
Procedure ConditionalOff(Left,Top,Right,Bottom:integer);
Begin
  Regs.AX:=16;
  Regs.CX:=Left;
  Regs.DX:=Top;
  Regs.SI:=Right;
  Regs.DI:=Bottom;
  Call;
end;

{<<< asetetaan hiirikursorin rajanopeus >>>}
Procedure SetDoubleSpeedThreshold(Th:integer);
Begin
  Regs.AX:=19;
  Regs.DX:=TH;
  Call;
end;
{<<< Muutetaan grafiikka parametrit teksti ruudulle sopiviksi >>>}
Procedure TextMouse;
Begin
  MouseY:=MouseY div 8;
  MouseX:=MouseX div 8;
end;

Begin
end.

peki [27.06.2004 12:01:17]

#

Aika kiva. En vaan pääse kokeilemaan, kun ei ole pascal kääntäjää :(
Tämän kun saisi puhtaalle asmille. :P

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta