Autor Wątek: Aplikacja OpenGL nie zamyka sie poprawnie...  (Przeczytany 1501 razy)

Offline Ardel

  • Użytkownik

# Luty 12, 2006, 15:53:06
Witam wszystkich ;)

Zaopatrzylem sie ostatnio w książke OpenGL Programowanie Gier i przykłady w niej nie chcą się poprawnie zamykać. Tzn. chodzi mi dokładnie o te fragmenty kodu:
case WM_CLOSE: // okno jest zamykane

// deaktywuje bieżący kontekst tworzenia grafiki i usuwa go
wglMakeCurrent(hDC, NULL);
wglDeleteContext(hRC);

// wstawia komunikat WM_QUIT do kolejki
PostQuitMessage(0);

return 0;
break;
Oraz przy pętli komunikatów
while (!done)
{
PeekMessage(&msg, hwnd, NULL, NULL, PM_REMOVE);

if (msg.message == WM_QUIT) // aplikacja otrzymała komunikat WM_QUIT?
{
done = true; // jeśli tak, to kończy działanie
}
.
Po naciśnięciu jednokrotnym na "X" przestaje być wszystko renderowane, ale program się wcale nie zamyka :/.
Pomaga zmienienie PeekMessage na PeekMessage(&msg, NULL, NULL, NULL, PM_REMOVE), ale moim zdaniem to nie będzie do końca dobre rozwiązanie. No i pytanie dlaczego w takiej książce zostały umieszczone takie kody ? ;/

PS. Przepraszam za zamieszanie i nie umieszczenie w tym miejscu kodu co powinien byc :/. Umknelo mi to podforum Windowsa.

PSII. Ech, chyba tam faktycznie musi byc NULL zamiast hwnd, przynajmniej teraz jak większość szkieletów (np. NeHe) przeglądam wrzucają tam NULL. (z NULLem oczywiście wszystko działa poprawnie). Zastanawia mnie wciąż, dlaczego więc w takiej książce jest błąd, no chyba, że jest jeszcze inne rozwiązanie albo za czasów win 2000 (ME?), takie coś działało ;)
« Ostatnia zmiana: Luty 12, 2006, 16:45:32 wysłana przez Ardel »

Offline Mr. Spam

  • Miłośnik przetworów mięsnych

Offline zarius

  • Użytkownik

# Luty 12, 2006, 17:46:14
Juz nawet w ksiazce petzolda (Programowanie Windows 95/98/NT (czyli bardzo stara)) jest:

while(GetMessage(&msg, NULL, 0, 0))

Sam mialem z tym problem bo w Dx np objawialo to sie tak (ogolnie na XP mialem tak) ze okno znikalo a w procesach dalej dzialalo i bardzo obciazalo procesor.

Pozdrawiam