PeekMessage



  • Hallo,

    ich habe einen modalen (WTL) Dialog, in dem eine lange Schleife läuft, die eine Listbox füllt.
    Damit das ganze auch in der Schleife neu gezeichnet wird und abgebrochen werden kann, habe ich aus

    http://www.c-plusplus.net/forum/viewtopic-var-t-is-152828.html

    die PeekMessage Schleife eingebaut:

    while(PeekMessage(&msg, NULL, 0, 0, PM_REMOVE) != 0)
    {
    	TranslateMessage(&msg);
    	DispatchMessage(&msg);		
    }
    

    Das funktioniert soweit, dass die Listbox gezeichnet wird und gescrollt werden kann und sich der Dialog verschieben lässt. Beim Schließen des Dialogs, bzw. Button IDCANCEL ist das Fenster zwar geschlossen, der Prozess scheint aber wieter zu laufen. Also möchte ich die Cancel Nachricht abfangen und alles richtig beendet.

    if(msg.message == WM_QUIT)
    

    wie in dem bsp. aus den faqs
    funktiert werder auf close noch idcancel.

    if(msg.message == WM_COMMAND)
    

    bekomme ich auf "Schließen" aber nicht über cancel button oder irgendeinen anderen.
    In Spy++ sehe ich jede Menge WM_COMMANDs blos kommen die wohl nicht in der PeekMessage an?!
    Ich denke, irgendetwas verstehe ich da falsch...

    Gruß
    bernd


  • Mod

    Die Schleife ist unsinnig. Normalerweise wird so eine Schleife mit GetMessage aufgebaut! PeekMessage wird nur verwendet, wenn man etwas anderes machen will wenn keine Nachricht anliegt.


Anmelden zum Antworten