[ ljube @ 22.08.2004. 10:37 ] @
Zdravo,

Radim na aplikaciji pisanoj u C++ koja otvara vise thredova ali samo API bez upotrebe MFC-a.

Radio sam neke izmjene na programu (2 dana) i tek sada sam primjetio da kada kliknem na dugme za gasenje programa, oslobode se sve varijable, i posalje se PostQuitMessage(0) poruka ali program ostane u process listi - task manager-a.

Ovo se definitivno nije prije desavalo, vec su uzrok silne promjene koje sam radio zadnja dva dana. Pouksavam par sati da otkrijem sta je uzrok ovome, postavio sam bezbroj trace poruka, ali sve izgleda dobro ali proces opet ostaje u listi.

Da li neko moze da mi da neke smjernice gdje bih mogao da trazim uzrok ovog problema?

Pozdrav,
Ljubisa
[ blaza @ 22.08.2004. 10:52 ] @
Obrati paznju na message loop.
Nakon PostQuitMessage(0), salje se WM_QUIT. GetMessage() po prijemu WM_QUIT vraca 0, pa se na taj nacin izlazi iz while petlje u primeru dole.
Code:
while (GetMessage(&msg, NULL, 0, 0)) 
    {
        if (!TranslateAccelerator(msg.hwnd, hAccelTable, &msg)) 
        {
            TranslateMessage(&msg);
            DispatchMessage(&msg);
        }
    }
[ ljube @ 22.08.2004. 11:53 ] @
Mnogo Hvala!!!
Odmah sam nasao problem cim ste mi objasnili kako funkcionise PostQuitMessage(0)

Inace koristim ovu funkciju koja je slicna DoEvents u VB.

Code:

void DoEvents (void)
{
  MSG Msg;
  while (PeekMessage(&Msg,NULL,0,0,PM_REMOVE))
   {
     TranslateMessage(&Msg);
     DispatchMessage(&Msg);
   }
}


U jednoj funkciji koja se ucitava prije glavne petlje progama iz WinMain, pozivala se i DoEvents i to je na neki nacin pravilo pomenuti problem.

Pozdrav,
Ljubisa