c ++ - WM\_CLOSE i modal message loop

Indlæg af Hanne Mølgaard Plasc

Problem



Jeg bruger en speciel meddelelsessløjfe til en brugerdefineret dialogboks. Når dialogboksen er åben og vinduet er lukket, vil jeg gerne nå det andet, hvis nedenstående, hvis (msg.message == WM\_CLOSE).


for(;;)
{
    if(PeekMessage(&msg, 0, 0, 0, PM\_NOREMOVE))
    {
        if(msg.message == WM\_CLOSE)
        {
            GetMessage(&msg, 0, 0, 0);
            break;
        }

        else
        {
            if(GetMessage(&msg, 0, 0, 0))
            {
                TranslateMessage(&msg);
                DispatchMessage(&msg);
            }

            if(msg.message == msgEnd)
                break;
        }
    }


Problemet er koden i dette, hvis det aldrig nås. Jeg prøvede at erstatte WM\_CLOSE med en anden besked for at se om loopen var problemet, men den anden besked fungerede fint. Hvad er der galt?

Bedste reference


Det ser ud til, at WM\_CLOSE er sendt, og den anden besked er sendt.


GetMessage og PeekMessage fungerer kun på udgivne meddelelser (de indsendt med PostMessage). Hvis en besked ikke er sendt, men sendt via SendMessage, håndteres den straks indenfor PeekMessage eller GetMessage, så du kan ikke få MSG struct for den.