MSG message member
-
Irgendwie bin ich gerade ein wenig blöd...
In der MSDN ist folgendes Beispiel:HWND hwnd; BOOL fDone; MSG msg; // Begin the operation and continue until it is complete // or until the user clicks the mouse or presses a key. fDone = FALSE; while (!fDone) { fDone = DoLengthyOperation(); // application-defined function // Remove any messages that may be in the queue. If the // queue contains any mouse or keyboard // messages, end the operation. while (PeekMessage(&msg, hwnd, 0, 0, PM_REMOVE)) { switch(msg.message) { case WM_LBUTTONDOWN: case WM_RBUTTONDOWN: case WM_KEYDOWN: // // Perform any required cleanup. // fDone = TRUE; } } }
Bei mir klappt das aber mit dem switch nicht.
Da kommen komplett andere Zahlencodes an, als die eigentlichen Event-Nachrichten!
In der MSG-Referenz steht, dass man das lowbyte verwenden soll, allerdings klappt das dann auch nicht.
Ich will die gleichen Werte haben, die auch in der Window-Prozedur als UINT-Parameter ankommen.
Wie geht das?
-
Das geht nur mit einigen Nachrichten. Zum Beispiel wirst du auf diese Weise nie ein WM_CHAR bekommen, weil das keine normale Nachricht, sondern eine von TranslateMessage aus WM_KEYDOWN und WM_KEYUP zusammen gebaute ist. Wahrscheinlich wird deine Nachricht auch erst von TranslateMessage erzeugt und kommt damit nie in den switch.