Documente Academic
Documente Profesional
Documente Cultură
Home / My courses / PWINDOWS / Capitolul 1. Concepte fundamentale. Partea 2 / Punctul de intrare în program - bucla de mesaje
După inițializare, funcția WinMain intră în bucla de evenimente, cunoscută și sub denumirea de bucla de mesaje sau pompa de mesaje, unde
programul efectuează adevărata lucrare. Aceasta este partea cea mai importantă a fiecărui program bazat pe evenimente.
while (1) {
status = GetMessage(&msg, NULL, 0, 0); // generically WAIT for any message to arrive in the queue
status = msg.wParam;
}
TranslateMessage(&msg);
}
Bucla de evenimente are o structură foarte specifică și conține doi pași principali:
În primul rând observăm funcția GetMessage() care așteaptă orice intrare de la tastatură, mouse sau ecran. Când se întâmplă oricare dintre astfel de
evenimente, sistemul de operare Windows îl plasează în coada de mesaje pentru această aplicație. GetMessage() apoi deblochează și copiază
mesajul de la coadă la obiectul msg.
Acesta este modul în care dispecerul-buclă rezolvă problema de așteptare simultan pentru mai multe evenimente, ceea ce era imposibil folosind
pseudocodul anterior.
Dacă starea returnată de GetMessage() este zero, înseamnă că aplicația a fost închisă de utilizator, deci bucla de evenimente trebuie încheiată
executând instrucțiunea break. Aplicația își va încheia execuția.
În caz contrar, mesajul este transmis funcției DispatchMessage(), care apelează „procedura de fereastră WndProc” înregistrată pentru fereastra
curentă.
Vom analiza „procedura de fereastră” un pic mai târziu, dar înainte de a părăsi acest fragment de cod, în rezumat despre proprietățile cheie ale
dispecerului (bucla de repartizare a evenimentelor).