Sunteți pe pagina 1din 2

An.II / Sem.

I
Curs 6 Programare Interfeţe Grafice .

Programare Interfeţe Grafice


Miercuri-23.11.2005
Curs 6 (PIG6)

Reguli utile pentru proiectarea interfeţelor

• folosim obiecte şi imagini legate de lumea virtuală


• păstrăm interfeţe cât se poate de simple
• structurăm interfaţa (comenzile de acelaşi tip vor fi grupate în acelaşi meniu vertical
sau în aceeaşi casetă de dialog, iar elementele de acelaşi tip or fi grupate pe o ramură
a unui control de tip arbore sau într-un Group Box)
• comenzile să fie uşor accesibile, acţiunile să aibă un număr mic de paşi
• nu restrângem funcţionalitatea de dragul simplificării
• intuiţi următoarea comandă, oferiţi alternative de urmat
• folosiţi indicaţii (exemplu balonul indicator): help, bara de stare.
• Folosiţi bara cu butoane
• Folosiţi multimedia-sunete, animatie
Programarea orientată pe mesaje este mai uşoară şi mai naturală decât cea secvenţială
Mesajele se produc la acţiunea utilizatorului asupra dispozitivelor de intrare (mouse, tastatură)
de sistem sau de alte aplicaţii de sistem. Mesajele intră în coada de mesaje a sistemului de unde
sunt trimise cozilor de mesaje ale aplicaţiilor
Drumul unui mesaj:
(e1) Mesajul se află în coada de mesaje a sistemului \ sunt gestionate de SO
(e2) Mesajul trece în coada de mesaje a aplicaţiei /
(e3) Mesajul este preluat de bucla de \
mesaje a programului | La nivel de aplicaţie Windows are loc pre-
(e4) Mesajul este trimis către funcţia | lucrarea de mesaje prin apelul unor funcţii
fereastră corespunzătoare din program / Windows
(e5) Mesajul poate avea un cod asociat care se \ aplicaţia Windows se scrie de programator
execută la primirea lui în aplicaţie /
Se aşează la coadă mesajele în ordinea venirii lor şi la ieşire iese primul venit.
Programatorul scrie cod asociat cu mesajele ce se produc dar circulaţia mesajelor în sistem
revine tot SO.
Controalele predefinite (Ok, Cancel) au o procesare invizibilă a mesajelor pentru
programator, ceea ce este un avantaj pentru programarea sunt Windows.
Ex: Butonul stâng apăsat, tasta Enter apăsată etc sunt recepţionate şi se trimite o
comandă ferestrei părinte, iar programatorul aşteaptă un mesaj de comandă de la buton în
funcţia ferestre a părinte a butonului.
Pentru a răspunde la acţiunile asupra utoanelor, programul trebuie să trateze mesajul
WM_COMMAND cu comenzile pe care aceste butoane le trimit automat ferestrei părinte.
Sub Windows fiecare buton este o fereastră şi orice fereastră are asociată o procedură ce
o deserveşte, care se numeşte funcţia ferestrei, numită callack().
callback() este apelată de Windows. Adresa ei este dată programului sistemului şi acesta
o a apela când o anumită acţiune se a executa sau trebuie să se execute repetat un anumit cod.
Funcţia este apelată de sistem atunci când se produce un eveniment care afectează o
fereastră:
- Mutarea sau redimensionarea ferestrei
- Mişcarea cursorului mouse-ului pe suprafaţa ei
- Apăsarea unui buton al mouse-lui
- Apăsarea unei taste când fereastra este activă

1 din 2
An.II / Sem. I
Curs 6 Programare Interfeţe Grafice .
Funcţia ferestrei procesează mesajul produs de eveniment. Aceasta este deja scrisă pentru
casetele de dialog şi pentru controalele predefinite.
Pentru fereastra principală a aplicaţiei şi pentru alte ferestre programatorul trebuie să
scrie funcţia fesrestrei.
Exemplu : Într-o casetă de dialog se apasă Ok. Bucla de mesaje a programului
recepţionează mesajul şi-l trimite funcţiei callack() a ferestrei pe care se află butonul Ok. După
procesarea acţiunilor de această funcţie ajunge un mesaj WM_COMMAND la callack() a
ferestrei părinte a butonului Ok.
Deci, programatorul trebuie să ataşeze cod doar la funcţia callback() a ferestrei părinte a
butonului Ok.
Programele Windows au în general o fereastră principală şi sunt bazate pe evenimente
cărora le corespund mesaje.
În C-ul clasic sunt necesare 5 linii de cod pentru a afişa mesajul “Hello World”, pe când
în C sub Widows sunt necesare aproximativ 40 de linii, însă mesajul apare într-o fereastră ce
poate fi mutată, redimensionată etc.
Punctul de plecare al oricărui program sub Windows este WinMain() ce conţine 30 linii
de cod.

===//===

2 din 2