WebNews.cz - počítače, komunikace, mobily, internet, finance

Mapa serveru | Administrace

Myš v Pascalu

Jan Šimecký - Profil - 25.07.2002
Chcete, aby váš program napsaný v Pascalu mohl uživatel ovládat myší?
V tomto článku bych vás chtěl seznámit s tím, jak ovládat myší programy napsané v Pascalu. Veškeré procedury jsem napsal v Borland Pascalu 7.0.

Aby nám procedury správně  fungovali musíme mít v úvodu jednotku dos, čili na začátek programu uvedeme:

uses dos;

Dále si připravíme proceduru pro zapnutí kurzoru myši:

Procedure MouseON;
 var r:registers;
   begin
     r.ax:=1;
     intr ($33,r)
   end;

Když už máme připravenou proceduru pro zapnutí kurzoru, tak si ještě připravíme proceduru pro vypnutí zapnutého kurzoru. Tato procedura je skoro stejná jen proměnná r.ax se bude rovnat 2, takže bude vypadat takto:

Procedure MouseOFF;
 var r:registers;
   begin
     r.ax:=2;
     intr ($33,r)
   end;

Nyní již můžeme zapnout a vypnout kurzor myši, ale ještě neumíme zpracovat data z myši. K tomu nám posloží tato procedura:

procedure stav(Var button,horiz,vert:Word);
 var r:registers;
  begin
     r.ax:=3;
     intr($33,r);
     button:=r.bx;
     horiz:=r.cx;
     vert:=r.dx;
  end;

Tato procedura nám vrátí v první proměnné aktuální stav tlačítek, v druhé horizontální pozici kurzoru a v třetí vertikální pozici kurzoru.

První program by mohl vypadat třeba takto:

Program Mouse;

 uses dos,crt;

Procedure MouseON;
    var r:registers;
  begin
    r.ax:=1;
    intr ($33,r)
  end;

 Procedure MouseOFF;
     var r:registers;
  begin
     r.ax:=2;
     intr ($33,r)
  end;

  Procedure stav (Var button,horiz,vert:Word);
      var r:registers;
   begin
      r.ax:=3;
      intr($33,r);
      button:=r.bx;
      horiz:=r.cx;
      vert:=r.dx;
   end;

 Var tlacitko,horiz,vert: word;

 begin

   clrscr;
{Vymaže obrazovku}
   mouseON;
{Zapne kurzor myši}

     Repeat
{Začátek cyklu}

       stav(tlacitko,horiz,vert);
{Načte stav myši}

       gotoxy(1,1);
{Nastaví kurzor na souřadnice 1,1}
       writeln('Tlacitko: ',tlacitko,' ');
{Vypíše stav tlačítka}
       writeln('Pozice kurzoru: ',horiz,',',vert,' ');
{Vypíše souřadnice myši} 

       delay(100);
{Počká 100 milisekund}

     until keypressed;
{Konec cyklu, cyklus skončí zmáčknutím libovolné klávesy}

    mouseOFF;
{Vypnutí kurzoru myši}

 end.

POZNÁMKY:
V normální textovém režim se kurzor posouvá naráz o osm bodů(Což je jedno písmeno).
Stisknutí levého tlačítka se rovná číslu 1
Stisknutí pravého  tlačítka se rovná číslu 2
Stisknutí prostředního tlačítka se rovná číslu 4

Veškeré dotazy směrujte prosím na mou adresu simecky@centrum.cz.

Tisk článku - Poslat článek - (3773 zobrazení)
Redakce | | | ISSN 1213-9335 | © 2005 Developed by terc.cz