Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

GetMessage w WinAPI

Ostatnio zmodyfikowano 2017-03-30 19:50
Autor Wiadomość
natofp
Temat założony przez niniejszego użytkownika
GetMessage w WinAPI
» 2017-03-30 19:03:54
Witam,

niedawno zacząłem uczyć się WinAPI w C++. Zauważyłem, że domyślnie ( oraz w poradnikach ) na końcu każdego programu okienkowego znajduje się fragment kodu podobny do tego :


 while (GetMessage (&messages, NULL, 0, 0))
    {
        /* Translate virtual-key messages into character messages */
        TranslateMessage(&messages);
        /* Send message to WindowProcedure */
        DispatchMessage(&messages);
    }

Jest on zamknięty w pętli while, więc mam pytanie - czy jeśli umieścimy dowolną nieskończoną pętlę przed tym kawałkiem kodu, to powyższy fragment nigdy się nie wykona(?). To nie miałoby sensu, a przecież tak wydaje się na logikę. Czy powyższy fragment jest umieszczany przez kompilator w innym wątku działając nie zależnie od programu? Będę bardzo wdzięczny za wyjaśnienie moich wątpliwości
P-159609
jankowalski25
» 2017-03-30 19:26:17
Kod wstawiaj w znaczniki [cpp]/*tutaj kod*/[/cpp].
czy jeśli umieścimy dowolną nieskończoną pętlę przed tym kawałkiem kodu, to powyższy fragment nigdy się nie wykona(?).
Jeśli wstawisz przed niemal czymkolwiek coś w stylu
while( true );
, to w taki sposób zawiesisz program i dalsze instrukcje się nie wykonają.
Czy powyższy fragment jest umieszczany przez kompilator w innym wątku działając nie zależnie od programu?
Skąd taki wniosek? Kompilator może robić różne dziwne optymalizacje, ale jeśli sam nie podzielisz kodu na wątki, to samoistnie taki podział zazwyczaj nie powstaje.
P-159610
natofp
Temat założony przez niniejszego użytkownika
» 2017-03-30 19:36:35
Czyli wtedy okno nie będzie reagowała na żadne polecenia, tak?
P-159611
marcolo2307
» 2017-03-30 19:50:00
Nie będzie. Pusta pętla while nic nie zrobi, to właśnie ta pętla z GetMessage obsługuje wszystkie kliknięcia itd. Btw. Nie próbuj pisać nic skomplikowanego w WinAPI, po ogarnięciu podstaw lepiej przejdź na Qt.
P-159614
« 1 »
  Strona 1 z 1