Rovat: Dr. Bit
2000. április 06., csütörtök 00:00
Újra indul a Dr. Bit. Egérkezelés C, C++ nyelvekben.
Mielõtt belevágnánk, néhány dolog a C és a C++ kapcsolatáról: A C++ a C egyfajta kiegészítése, továbbfejlesztése. Több olyan dolgot könnyedén megvalósíthatunk vele, ami C-ben elég nehéznek tûnhet. Ez nem azt jelenti, hogy a C rosszabb, mint a C++, hiszen a C a C++ nyelv "õse", a C++ alapjai a C-n nyugszanak. A C gyökerei egészen a 60-as évekre nyúlnak vissza, amikor Martin Richards megalkotta a BCPL-t, majd ezt továbbfejlesztve Ken Thompsonnak köszönhetõen megszületett a B, amibõl Dennis Ritchie megalkotta a C-t, ami mostanra annyira befutott, hogy ebben írják az UNIX-ot és a Linuxot, az újabb MS-DOS-okat, C-ben készült a DOOM, és még sok más program. A C++ szerintem nagyon alkalmas arra, hogy valaki elkezdjen programozni. Ez nem azt jelenti, hogy a C++ egy, a kezdõk számára létrehozott nyelv (mint pl. a BASIC), viszont az elsajátítása nem különösen nehéz. A következõkben körülbelül havonta fogok cikkeket írni a C-rõl, illetve a C++-ról. Igyekszem majd hasznos, érdekes programozási témákat, feladatokat leírni, elmagyarázni. Feltételezem, hogy már ismered valamelyest a C-t, vagy C++-t. Az elsõ téma az egérkezelésrõl szól, két részben, a másik fele a következõ cikkben fog megjelenni. Remélem, tudok majd segíteni a C++ nyelv jobb megértésében, használatának könnyebbé tételében, és jó programok készítésében. A Szerzõ Az elsõ téma: Az egér használata C++-ban avagy hogyan fogjuk munkára a "cincogót" DOS alatt? Ez a módszer ugyanúgy használható C-ben, illetve C++ -ban Legelõször is illeszd be a forráskódba következõt, az #include utasítások után: #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; Most már csak azokba a függvényekbe kell bemásolnod a következõket, amelyekkel vezéreltetni akarod az egeret: union REGS inregs, outregs; int AX,BX,CX,DX; Így most van egy egérkezelõ programrészed. Ezzel most már könnyedén vezérelheted az egeret. Használatára példa: Egér iniciálása: EGER(0,0,0,0); (Ha sikertelen AX=0 -val tér vissza) Egérkurzor láthatóvá tétele: EGER(1,0,0,0); Egérkurzor láthatatlanná tétale: EGER(2,0,0,0); (A többi funkcióról majd következõ alkalommal!) Írj egy programot, ami iniciálja és láthatóvá teszi az egerkurzort(ha nem iniciálható, kilép) majd egy billentyû lenyomásáig várakozik: A megoldása: /* *** EGER1.C - Egy egyszeru egerkezelo peldaprogram. *** */ #include<stdio.h> /* printf() */ #include<dos.h> /* int86() */ #include<conio.h> /* getch() */ /* *** 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; /* Az eger hasznalatahoz KELL!!! */ EGER(0,0,0,0); if(!AX) { printf("nHiba: Nem talaltam egerdrivert!nAz eger nem inicialhato!n"); /* *** Nem talaltunk egeret. Kilepes *** */ return; } EGER(1,0,0,0); /* Legyen lathato az egerkurzor. */ printf("Egerhasznalat demo. A kilepeshez nyomj le egy billentyut!"); getch(); /* Varakozas egy billentyure. */ EGER(2,0,0,0); /* Ne legyen lathato az egerkurzor. */ return; /* Kilepes */ } /* *** Peldaprogram vege. ***/ Hát mostanra ennyi. A többit a következõ alkalommal! (kb. 1 hónap múlva) Akkorra ígérem, hogy meglesz a funkciókód-táblázat! |