|
Structura de baza a unei aplicatii Windows
Din punct de vedere conceptual, o diferen?? esen?ial? īntre un program scris pentru Windows ?i unul pentru MS-DOS este aceea c? programul MS-DOS execut? comenzi ale sistemului de operare pentru a comunica cu utilizatorul (pentru a recep?iona tastele ap?sate de c?tre utilizator sau pentru a utiliza servicii ale sistemului erau apelate func?ii specifice (ex. getchar()), īn timp ce programul Windows face acest lucru interpretānd mesaje venite de la sistemul de operare.
Mesajele recep?ionate de c?tre aplica?iile Windows se pot īnp?r?ii īn trei categorii. O prim? categorie este reprezentat? de a?a-numitele mesaje sistem ?i con?ine mesaje standard emise de c?tre sistemul de operare. De exemplu, mesajul WM_CREATE este transmis pentru crearea unei ferestre, mesajul WM_LBUTTONDOWN atunci cānd este apasat butonul stāng al mouse-ului, etc.
Din a doua categorie fac parte mesajele transmise unei aplica?ii īn urma interac?iunii utilizatorului cu componentele standard ale interfe?ei (campuri de meniu, butoane etc). Aceste mesaje difer? de la o aplica?ie la alta ?i poart? numele de comenzi.
De asemenea, programatorul poate defini mesaje proprii, categorie ce poart? numele de mesaje utilizator.
Figura 2. Interactiunea dintre utilizator si aplicatiile Windows
Atunci cānd este implementat un program īn limbajul C/C++ sub sistemul de operare MS-DOS de exemplu, este absolut necesar ca acest program s? con?in? defini?ia unei func?ii ce poart? numele main(). Īn momentul īn care programul este lansat īn execu?ie aceasta este prima func?ie apelat?.
Īn mod analog, programele realizate sub sistemul de operare Windows trebuie s? con?in? o func?ie global? numit? WinMain(). Aceast? func?ie va realiza anumite opera?ii specifice, cum ar fi:
- inregistrarea in sistemul de operare a claselor de ferestre utilizate in aplicatie. Clasa unei ferestre reprezinta o descriere generica a reprezentarii grafice si a functionalitatii acesteia (a nu se confunda clasele de fereastra cu notiunea de clasa din programarea orientata-obiect). Functionalitatea unei ferestre este implementata prin intermediul unei functii speciale, numita procedura de fereastra.
- crearea ferestrei principale. Fiecare aplicatie Windows are asociata o fereastra, numita fereastra principala, indiferent daca aceasta este sau nu vizibila. Aceasta fereastra reprezinta "suportul" celorlalte obiecte grafice care ofera utilizatorului informatii privind starea aplicatiei si care permit interactiunea acestuia cu aplicatia.
- implementarea "pompei de mesaje". Fiecare aplicatie Windows contine o stiva in care sunt depozitate mesaje transmise de sistemul de operare ca urmare a interpretarii unor evenimente generate de utilizator sau alte aplicatii (figura 2). "Pompa de mesaje" reprezinta ciclul prin care mesajele sunt extrase din stiva si transmise spre tratare ferestrelor aplicatiei carora le sunt adresate.
In cele ce urmeaza este prezentat codul sursa al unei aplicatii simple, ce va afisa un text in interiorul ferestrei principale.
|