12.1. Setarea ecranului în mod text
Setarea (punerea) se realizează cu ajutorul funcţiei textmode care are prototipul:
void textmode (int modtext);
unde
modtext poate fi exprimat numeric sau simbolic în felul următor:
Modul text activat Constantă simbolică Valoare
alb/negru 40 coloane BW40 0
color 40 coloane C40 1
alb/negru 80 coloane BW80 2
color 80 coloane C80 3
monocrom MONO 7
color 43 linii pentru EGA
şi 50 linii pentru VGA C4350 64
modul precedent LASTMODE -1
Modul MONO se poate seta pe un adaptor monocolor. Celelalte moduri se pot seta pe adaptoare color.
12.2. Definirea unei ferestre
Dacă dorim să partajăm ecranul în zone care să poată fi gestionate independent trebuie să definim ferestre.
O fereastră este o zonă dreptunghilară de pe ecran care se poate defini cu funcţia window al cărei prototip este:
void window (int stanga, int sus, int dreapta, int jos);
unde:
-(stanga, sus) = coordonatele colţului din stânga al ferestrei;
-(dreapta, jos) = coordonatele colţului din dreapta jos.
La un moment dat o singură fereastră este activă şi anume aceea definită de ultimul apel al funcţiei window. Funcţiile de gestionare a ecranului în mod text acţionează întotdeauna asupra ferestrei active. După setarea modului text cu ajutorul funcţiei textmode este activ tot ecranul.
Menţionăm că funcţia window nu are nici un efect dacă parametrii de la apel sunt eronaţi.
12.3. Ştergerea unei ferestre
Fereastra activă se poate şterge cu ajutorul funcţiei clrscr cu prototipul:
void clrscr(void);
-
fereastra activă (sau tot ecranul) devine activă; fondul are culoarea definită prin culoarea de fond curentă;
-
clrscr poziţionează cursorul în poziţia (1,1) a fiecărei ferestre.
12.4. Gestiunea cursorului
Programatorul poate plasa cursorul pe un caracter al ferestrei folosind funcţia gotoxy al cărei prototip este:
void gotoxy (int coloana, int linie);
unde:
-
(coloana, linie) sunt coordonate relative la fereastra activă, dacă sunt înafara ferestrei active apelul este ignorat;
Poziţia cursorului se poate determina cu ajutorul funcţiilor wherex şi wherey care au prototipurile:
int wherex (void); -returnează numărul coloanei în care se află cursorul
int wherey (void); -returnează numărul liniei în care se află cursorul.
Există cazuri când se doreşte ascunderea cursorului. Acest lucru se poate realiza printr-o secvenţă specială în care se utilizează funcţia geninterrupt.
void ascundcursor (void) // face invizibil cursorul
{ _AH = 1;
_CH = 0x20;
geninterrupt (0x10);
}
Cursorul poate fi reafişat apelând funcţia următoare:
void afiscursor (void) // face vizibil cursorul
{ _AH = 1;
_CH = 6;
_CL = 7;
geinterrupt (0x10);
}
-
AH, CH, CL reprezintă unii din regiştrii microprocesorului.
Utilizatorul are posibilitatea să obţină parametrii curenţi ai ecranului prin apelarea funcţiei gettextinfo al cărui prototip este:
void gettextinfo (struct text_info *p);
unde structura text_info este definită în fişierul conio.h astfel:
struct text_info
{ unsigned char winleft; // amplasarea colturilor ferestrei
unsigned char wintop;
unsigned char winright;
unsigned char winbottom;
unsigned char attribute; // culoarea fondului, a caracterelor si
unsigned char normattr; // clipirea
unsigned char currmode;
unsigned char screenheight; // dimensiunea ecranului
unsigned char screenwidth;
unsigned char curx; // pozitia cursorului
unsigned char cury;
};
12.6. Modurile video alb/negru
Există două moduri (intens şi normal) care se pot activa cu funcţiile highvideo şi lowvideo ale căror prototipuri sunt:
void highvideo (void);
void lowvideo (void);
Intensitatea iniţială este de obicei cea normală. Se poate reveni la intensitatea normală dacă se apelează funcţia normvideo cu acelaşi prototip ca al celorlalte două funcţii.
Exemplu:
Vom scrie un program care afişează parametrii ecranului:
#include
#include
void main (void)
{ struct text_info par_ecran;
gettextinfo (&par_ecran);
printf (“\nstanga: %u sus: %u dreapta: %u jos: %u\n”,
par_ecran.winleft,
par_ecran.wintop,
par_ecran.winright,
par_ecran.winbottom);
printf (“atribut: %d mod curent: %d\n”,
par_ecran.normattr, par_ecran.currmode);
printf (“inaltimea ecranului: %d latimea ecrnului: %d\n”,
par_ecran.screenheight, par_ecran.screenwidth);
printf (“coloana cursorului: %d linia cursorului: %d\n”,
par_ecran.curx, par_ecran.cury);
}
12.7. Setarea culorilor
Culoarea fondului se setează cu ajutorul funcţiei textbackground cu prototipul următor:
void textbackground (int culoare);
unde:
-
culoare este un întreg cuprins între 0 şi 7 cu semnificaţia din tabelul anterior al culorilor.
Culoarea caracterelor se setează cu ajutorul funcţiei textcolor cu prototipul următor:
void textattr (int culoare);
unde:
-
culoare este un întreg între 0 şi 15.
Se pot seta ambele culori, precum şi clipirea caracterului folosind funcţia textattr de prototip:
void textattr (int atribut);
unde:
-
atribut e definit cu ajutorul relaţiei (*) de la începutul lecţiei.
Dostları ilə paylaş: |