Messages



  • Hallo,
    ich hätte mal eine Frage zu folgenden Code.

    MSG message;
    Zero(&message,sizeof(MSG));
    while (message.message!=WM_QUIT) {
        while (PeekMessage(&Message,NULL,0,0,PM_REMOVE)) {
            TranslateMessage(&message);
            DispatchMessage(&message);
        }
        function();
    }
    

    Also es wird eine Variable vom Typ MSG erzeugt (enthält der immer Nachrichten,
    was gerade am Fenster gemacht wird? Also schließen, minimieren, oder?). Diese
    wird dann geleert. Und dann folgt die Nachrichtenschleife. Die verstehe ich
    jetzt nicht ganz. Solange nicht die Nachricht zum schließen eintrifft (message
    ist anscheinend ein Element von MSG, oder?), sollen Nachrichten abgeruft werden,
    die dann übersetzt und verarbeitet (dispatch). Aber was heißt verarbeitet?
    Und wird jetzt die Funktion function() ausgeführt, wenn die Nachricht zum
    Schließen gegeben wurde? Weil das wird ja erst beim erneuten Schleifendurchlauf
    registriert. Und letzte Frage: Wenn mehrere Nachrichten abgefangen werden,
    überschreibt die neuste dann nicht die letzte oder wurde die bereits verarbeitet?



  • Kann mir das denn niemand erklären? Das ist doch die Standard-Nachrichtenfuntkion!



  • Wer nach 40 Minuten schon rumjammert, bekommt von mir auch keine Antwort.



  • Bin halt die schnelligkeit vom c++ Forum gewöhnt! :p



  • Wollte jetzt eine Antwort schreiben, aber damit ich sicher keinen Mist erzähle gebe ich dur nur einen Link. (Im übrigen muss ich jetzt desperate houswives schauen. ;))

    http://msdn2.microsoft.com/en-us/library/ms644927.aspx

    Da steht alles drin. 😉

    EDIT:
    Viels Spass



  • Gut, jetzt habe ich es verstanden, aber wäre es nicht sinnvoller die Funktion
    oben in der Nachrichtenschleife zu platzieren? Weil wenn man das Fenster
    schließt, wird doch die Funktion noch einmal aufgerufen, oder?

    Und was ist PM_REMOVE, was bringt das?


Anmelden zum Antworten