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
|