CyberPress.Sopron

(http://www.cyberpress.hu/)

Rovat: Dr. Bit

2000. április 10., hétfő 00:00


Programozzunk együtt!

Az egérkezelés grafikus módban.

Az egérkezelés grafikus módban



Az elõzõekben volt szó az egérkezelés alapjairól. Mostanában egyre gyakrabban használják
a grafikus módot a felhasználói programokban. Ezért most ezzel foglalkozom.
Nos, még emlékezhetsz, hogy az egeret az 'EGER(0,0,0,0);' utasítással iniciálhatod.
Az egérkurzort pedig az 'EGER(1,0,0,0);'-el teheted láthatóvá, ezután megjelenik a
nyíl alakú kurzor, ami követi az egér mozgását, így ezzel semmi dolgod.
Ha azonban nem adod ki az 'EGER(1,0,0,0);' parancsot, akkor is le tudod kérdezni
az egér pozícióját! Így, ha ezt folyamatosan lekérdezed, és a pozíciójára kirajzolsz
egy tetszõleges alakzatot, akkor az így az egérkurzorod lesz. Itt van erre egy példa.
Ez bemutatja a nyíl alakú kurzort, valamint egy példával is szolgál arra, hogy hogyan
tudod megváltoztatni az egérkurzort.(Itt egy körre váltottam, de ez akármi lehet.)
Ne rémítsen el a forráskód mérete! Sok benne a tagolás, magyarázat, de semmi különösen
nehezet nem tartalmaz.
(Megjegyzés: VGA monitor kell hozzá, de ez szerintem már alapfelszerelés.)


/* *** EGER3.C - Egy egyszeru grafikus peldaprogram C -re. *** */
#include &nbs p; /* printf() */
#include /* int86() */
#include &nbs p; /* getch() */
#include /* initgraph(), grafikai fuggvenyek */
/* *** Az altalunk irt egervezerlo. *** */
#define EGER(k,l,m,n);
inregs.x.ax=k;
inregs.x.bx=l;
inregs.x.cx=m;
inregs.x.dx=n;
int86(0x33,&inregs,&outregs);
AX=outregs.x.ax;
BX=outregs.x.bx;
CX=outregs.x.cx;
DX=outregs.x.dx;

/* *** MAIN *** */
void main(void)
{
union REGS inregs, outregs; /* Az eger hasznalatahoz KELL! */
int AX,BX,CX,DX; &nbs p; /* Az eger hasznalatahoz KELL! */
int oldx,oldy;
EGER(0,0,0,0); &nbs p; /* Inicialjuk az egeret. */
if(!AX)
{
printf("nHiba: Nem talaltam egerdrivert!nAz eger nem inicialhato!n");
/* *** Nem talaltunk egeret. Kilepes *** */
return;
}
int gdriver = VGA, gmode = VGAHI, errorcode;
initgraph(&gdriver, &gmode, ""); /* Inicialjuk a grafikus rendszert. */
errorcode = graphresult();
if (errorcode != grOk) ; /* Hiba eseten kilepunk. */
{
printf("Grafikus hiba: %sn", grapherrormsg(errorcode));
return;
}

EGER(1,0,0,0); ; /* Legyen lathato az egerkurzor. */

outtextxy(3,5,"Egerhasznalat demo. A tovabblepeshez kattints a JOBB egergombbal!");
outtextxy(3,15,"Az egerkurzor most az alapmeretezett nyil.");
while (BX!=2) &nb sp; /* A jobb gombal valo kattintasig ismetles. */
{
EGER(3,0,0,0); &nbs p; /* Egerkurzor lekerdezese. */
if(BX==1) outtextxy(3,25,"Bal gomb lenyomva.");
if(BX==2) outtextxy(3,35,"Jobb gomb lenyomva.");
if(BX==3) outtextxy(3,45,"Kozepso gomb lenyomva.");
}

EGER(2,0,0,0); /* Ne legyen lathato az egerkurzor. */
cleardevice(); &nbs p; &n bsp; /* Grafikus kepernyo torlese. */
outtextxy(3,5,"Egerhasznalat demo. A tovabblepeshez kattints a BAL egergombbal!");
outtextxy(3,15,"Az egerkurzort most kicsereltem egy korre.");

while (BX!=1) &nb sp; /* A bal gombal valo kattintasig ismetles. */
{
EGER(3,0,0,0); &nbs p; /* Egerkurzor lekerdezese. */
setcolor(WHITE);
circle(CX,DX,5); &n bsp; /* A kor egerkurzor megrajzolasa feher szinnel. */
if(BX==1) outtextxy(3,25,"Bal gomb lenyomva.");
if(BX==2) outtextxy(3,35,"Jobb gomb lenyomva.");
if(BX==3) outtextxy(3,45,"Kozepso gomb lenyomva.");

setcolor(BLACK);
circle(CX,DX,5); &n bsp; /* A kor egerkurzor torlese a fekete hatterszinnel. */
}
EGER(2,0,0,0); &nbs p; /* Ne legyen lathato az egerkurzor. */
closegraph(); /* A grafikus rendszer lezarasa. */
return;
} /* *** Peldaprogram vege. *** */

Nos, mint láthattad, a második esetben csak lekérdeztem az egér pozícióját és
kirajzoltam rá egy kört a 'circle()' utasítással, majdutána egy fekete színû
körrel tüntettem el. Az egér pozícióját és a gombok lenyomását az 'EGER(3,0,0,0);'
utasítással kérdeztem le. Természetesen egy kis próbálgatással akármit ki tudsz majd
rajzolni az alapméretezett nyíl helyett. Ilyen lehet például egy homokóra, egy
akciójátékban a célkereszt, és még sok minden más, ez már csak a te fantáziádon múlik.
Hát azt hiszem, errõl a témáról ennyi elég is. Leírtam, hogyan tudod megvalósítani
a grafikus egérkezelést, a többit rábízom a te kreativitásodra.
A következõkben még mindig az egérkezelésnél maradunk, be fogom mutatni, hogyan lehet
grafikákat létrehozni egy programból, az egér segítségével.


hpet