CyberPress
közéleti magazin
cyberpress@sopron.hu
2024. december 29., vasárnap, Tamás, Tamara napja


Irodalmi Kávéház

Intranet Galéria

Apróhirdetések

Képeslapok

Soproni Képindex

Polgármesteri Hivatal

ZÓNÁK
Főoldal
Lapszemle
  Lapszemle
Kultúra
  KultúrVáros
  Lélektől lélekig
  SzínházVilág
  Soproni Ünnepi Hetek
  Borváros
Regionális kulturális programajánló
  Színház
  Kiállítás
  Rendezvények
  Hangverseny-Zene
Cyber Kurír
  Hírek - események
  Szomszédvár - Régió
  Soproni Snassz
Európai Unió
  EU
Cyber hírek
  Közélet
  SopronMedia
  Városháza
  Sport
Szórakozás
  Fesztiválgájd
  HangFal
  Mi1más
  Diákélet - diákszáj
  ViccGödör
Gazdaság
  Kereskedelmi és Iparkamara
Sport - szabadidő
  Sportcentrum
  Száguldó Cirkusz
Tudomány-technika
  Űrvadász
  Egészség
Környezet
  Borostyán
  Egészség

Dr. Bit  

Programozzunk együtt!

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

 



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


címlap zóna archívum




© 1999-2007, Internet Sopron Egyesület