Skocz do zawartości

[Pascal] Obsługa Myszki w Turbo Pascalu


Perykles

Polecane posty

Witam, szukałem w google jakiegoś opisu jak w pascalu myszke obslugiwac, ale nic nie moglem znalezc. Znalazlem kilka stron, niby pisze ze to obsluga myszki w pascalu, ale kod jest napisany w jakims assemblerze. Czytalem tez ze mozna zrobic wlasny modul do myszki, ale nie moge nigdzie znalezc, jakie są procedury obslugi myszki. Pomozecie?

Link do komentarza
Udostępnij na innych stronach

Ja odpowiem na Twoje drugie pytanie: polecam Delphi, sam w tym języku programuję i wydaje mi się on prosty. Składnia prawie ta sama co w Pascalu, możesz jednak wizualnie tworzyć swój program, dodawać komponenty oraz w bardzo łatwy sposób obsłużyć myszkę, jeśli tego potrzebujesz :)

Etharnion - 2D RPG

Szukam grafika chętnego do współpracy przy projekcie.

Link do komentarza
Udostępnij na innych stronach

haha wstawki z asma to podstawa :P

 

też kiedyś się tego uczyłem :D

 

procedure g_pobierz_status_myszy(var lewy, srodkowy, prawy : boolean;
                              var poz_x, poz_y : word);
var
   temp : word;
   temp_poz_x, temp_poz_y : word;
begin

   asm
       mov ax, 0003h                  {laduj 00003h do AX}
       int 33h                        {wywolaj przerwanie 33h}
       mov word ptr temp, bx          {laduj BX do temp}
       mov word ptr temp_poz_x, cx    {laduj CX do temp_poz_x}
       mov word ptr temp_poz_y, dx    {laduj DX do temp_poz_y}
   end;

   poz_x := temp_poz_x;
   poz_y := temp_poz_y;

   if ( (temp and $01) <> 0 ) then lewy := TRUE else lewy := FALSE;
   if ( (temp and $02) <> 0 ) then prawy := TRUE else prawy := FALSE;
   if ( (temp and $04) <> 0 ) then srodkowy := TRUE else srodkowy := FALSE;

end;

 

tak kiedyś obsługiwałem myszkę w prostych programach

 

Pozdrawiam!

 

ps oczywiście pisane na podstawie mądrych książek

Link do komentarza
Udostępnij na innych stronach

Dzięki. Mam jeszcze jedno pytanko, zrobiłem taki moduł do myszki, żeby było prościej, tylko że wywala mi 3 błędy jak kompiluje. W asemblerze się jeszcze nie orientuje za bardzo, to kopiowałem procedury z http://computersun.pl/pascal/porady/obsluga-myszki-p_54.html żeby zobaczyć co z tego wyjdzie :P Ciężko się w tym połapać. Co tutaj zrobiłem źle?

 

Unit ModulObslugiMyszki;

Interface

Uses CRT;

Procedure PokazMyche
Procedure SchowajMyche
Procedure SprawdzMyche(x,y,ButtonStatus:word);
Procedure DefHorPlace(min,max:integer);
Procedure DefVerPlace(min,max:integer);
Procedure SprawdzPozycje(x1,y1,x2,y2:integer);
Procedure WrazliwoscMychy(hor,ver:integer);
Procedure SprawdzWrazliwoscMychy(var,hor,ver:integer);
Procedure UmiescMyche(x,y:integer);

Implementation

{przerwanie wstawka asemblera w Turbo Pascalu - pokaż myszkę/ pokazywanie wskaźnika myszki}
Procedure PokazMyche: Assembler;
Asm
   mov ax, 0001h
   int 33h
End;

{przerwanie wstawka asemblera w Turbo Pascalu - schowaj myszkę/ chowanie wskaźnika myszki}
Procedure SchowajMyche: Assembler;
Asm
   mov ax, 0002h
   int 33h
End;


{przerwanie wstawka asemblera w Turbo Pascalu - sprawdzanie myszki/ wykrywanie przycisku myszki}
Procedure SprawdzMyche(Var X, Y, ButtonStatus :Integer);
Var
   Temp1, Temp2, Temp3 :Word;
Begin
Asm
   mov ax, 0003h
   int 33h
   mov Temp1, bx
   mov Temp2, cx
   mov Temp3, dx
End;
ButtonStatus:=Temp1;
X := Temp2;
Y := Temp3;
End;

Procedure DefineHorPlace(Min, Max :Integer): Assembler;
Asm
   mov ax, 0007h
   mov cx, Min
   mov dx, Max
   int 33h
End;

Procedure DefVerPlace(Min, Max :Integer): Assembler;
Asm
   mov ax, 0008h
   mov cx, Min
   mov dx, Max
   int 33h;
End;


{przerwanie wstawka asemblera w Turbo Pascalu - sprawdź pozycję myszki/ sprawdzanie myszki}
Function SprawdzPozycje(X1, Y1, X2, Y2 :Integer):Boolean;
Var
   MouseStatus, PosX, PosY :Integer;
Begin
GetStatus(PosX,PosY,MouseStatus);
If (PosX >= X1) And (PosX <= X2) And
       (PosY >= Y1) And (PosY <= Y2) Then MouseIn := True Else MouseIn := False;
End;


{przerwanie wstawka asemblera w Turbo Pascalu - ustawianie wrażliwości myszki}
Procedure WrazliwoscMychy(Hor, Ver :Integer); Assembler;
Asm
   mov ax, 001Ah
   mov bx, Hor
   mov cx, Ver
   mov dx, 0
   int 33h
End;


{przerwanie wstawka asemblera w Turbo Pascalu - sprawdź wrażliwość myszki/ sprawdzanie wrażliwości myszki}
Procedure SprawdzWrazliwoscMychy(Var Hor, Ver :Integer);
Var
   Temp1, Temp2 :Word;
Begin
Asm
   mov ax, 001Bh
   int 33h
   mov Temp1, bx
   mov Temp2, cx
End;
Hor := Temp1;
Ver := Temp2;
End;


{przerwanie wstawka asemblera w Turbo Pascalu - przesuniecie myszki do punktu/ umieszczanie myszki w punkcie}
Procedure UmiescMyche(X, Y :Integer); Assembler;
Asm
   mov ax, 0004h
   mov cx, x
   mov dx, y
   int 33h
End;

End.

Link do komentarza
Udostępnij na innych stronach

To w którym programie najlepiej myszkę obsługiwać?

 

A tak z ciekawości, którego języka programowania najlepiej się nauczyć? :D Pascala się dość łatwo uczy, ale trzeba przyznać, że już pascal jest trochę przestarzały.

To drugie pytanie to takie trochę flame'owe (chyba, że temat widzą sami ludzie preferujący Delphi, to wtedy jest OK i Cię mają :D ). Jeśli zamierzasz być programistą to ucz się kilku języków (oczywiście nie jednocześnie). Jest dużo języków podobnych do C/C++ (np. PHP, Java), więc nauka C++ jest pod tym względem opłacalna. Teraz do pisania stron internetowych nawet trzeba znać różne języki (np. PHP, JavaScript, CSS, XHTML, SQL - te trzy ostatnie to raczej nie służą bezpośrednio do programowania: dlatego się mówi, że stworzyłem stronę, a nie zaprogramowałem stronę :D).

 

Więc jak widzisz, nie możesz postawić na jeden język i się go uczyć, i tak na studiach (bo skoro się uczysz programować to chyba jeszcze nie studiujesz ;) ) będziesz zmuszony się nauczyć przynajmniej części z tego co wymieniłem. - mam nadzieję, że to nie zniechęci Cię do nauki ;)

Link do komentarza
Udostępnij na innych stronach

Jeszcze nie studiuje, w szkole na TI wkuwamy pascala cały czas, a że właśnie zamierzam być programistą, to nie chcę przez dwa lata tylko pascala klepać w liceum :P Bo do studiów się zanudzę ;) Na razie zdecydowałem się na naukę c++, jest trochę skomplikowany ale i tak mnie to wciągnęło ;) Potem albo delphi albo języki do pisania stron internetowych.

Link do komentarza
Udostępnij na innych stronach

Zarchiwizowany

Ten temat jest archiwizowany i nie można dodawać nowych odpowiedzi.

×
×
  • Utwórz nowe...