Bekomme keine WM_SIZE beim Verändern der Fenstergröße
-
Hi Leutz,
wenn ich mein Fenster vergrößere oder verkleinere kassiere ich keine WM_SIZE Messages. An was kann das liegen?while(PeekMessage(&msg, 0, 0, 0, PM_REMOVE)) { TranslateMessage(&msg); DispatchMessage(&msg); switch(msg.message) { case WM_SIZE: { // [...] }break; //[..] } }Ich habe an den Anfang der WM_SIZE einen Breakpoint gesetzt, aber dieser wird nie Erreicht.
thx
-
Und Du bist sicher, dass auch niemand anders diese Nachricht abfängt?
Warum hast Du kein Fenster-Handle angegeben??? Bist Du sicher, dass Dein Thread überhaupt solche Nachrichten bekommt?
-
while(PeekMessage(&msg, 0, 0, 0, PM_REMOVE)) { TranslateMessage(&msg); DispatchMessage(&msg); switch(msg.message) { case WM_SIZE: { // [...] }break; //[..] } }Entfernt DispatchMessage die Nachricht nicht? Normalerweise sollte eine Message nicht an der Stelle behandelt werden, wo du sie grade behandelst... Ich hätte jetzt ehrlich gesagt eine Exception erwartet.
-
Üblicherweise behandelt man diese Messages in der entsprechenden Windows-Prozedur.
-
Die WM_SIZE Nachricht wird mit SendMessage abgeschickt. Also landet sie auch nicht in der Message Queue.
-
Hallifax schrieb:
while(PeekMessage(&msg, 0, 0, 0, PM_REMOVE)) { TranslateMessage(&msg); DispatchMessage(&msg); switch(msg.message) { case WM_SIZE: { // [...] }break; //[..] } }Entfernt DispatchMessage die Nachricht nicht? Normalerweise sollte eine Message nicht an der Stelle behandelt werden, wo du sie grade behandelst... Ich hätte jetzt ehrlich gesagt eine Exception erwartet.
alle anderen messages gehen, nur eben die eine nicht aber ich schau mir das mit den dispatch messsage nochmal an.
danke
-
wie gesagt: in der nachrichtenschleife kannst du WM_SIZE nicht abfangen.
-
Man sollte doch versuchen, eine Nachricht da abzufangen, wo sie üblicherweise auch ankommt. Und in diesem Fall ist das wohl eindeutig die WindowProc.
Gruß André