Sunteți pe pagina 1din 2

Programarea în Windows

Home / My courses / PWINDOWS / Capitolul 1. Concepte fundamentale. Partea 2 / Punctul de intrare în program - bucla de mesaje

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.

 // event loop ("message pump")

    while (1) {

        MSG msg; // message object to receive       

        status = GetMessage(&msg, NULL, 0, 0);  // generically WAIT for any message to arrive in the queue

        if (status == 0) { // message NOT to be processed?

            status = msg.wParam;

            break; // terminate the event loop

    }

        TranslateMessage(&msg);

        DispatchMessage(&msg);        // dispatch to the appropriate "window proc"

  }

    return status; // return to Windows with the status of processing

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).

Last modified: Monday, 4 May 2020, 12:00 AM

◄ Punctul de intrare în program -


Jump to... Proprietățile dispecerului ►
inițializarea
PWINDOWS
Data retention summary
Get the mobile app

S-ar putea să vă placă și