MessageBox sendet WM_QUIT?
-
Hi,
habe gerade das Problem, dass ich, wenn ich VOR mienem Messageloop eine MessageBox ausgebe mit die WM_QUIT-Message auf mein Msg-Stack gepackt wird.
MessageBox "während des Messageloops" macht keine zicken.
vereinfacht sieht das prog so aus:
MessageBox( NULL, L"Bla blubb...", L"Horrido!", MB_OK ); // <--- Boese msg while( msg.message != WM_QUIT ) { // Handle the windows messages. if(PeekMessage(&msg, NULL, 0, 0, PM_REMOVE)) { TranslateMessage(&msg); DispatchMessage(&msg); } else { //... Rendern etc. ... } }
-
Also ich konnte den Fehler grad absolut nicht reprodzuieren, kannste dazu den ganzen Code posten ?
-
MessageBox packt kein WM_QUIT auf die Queue.
Bist Du sicher, dass Deine kopfgesteuerte Loop nihct abbricht, weil die msg struct bereits mit WM_QUIT initialsiert ist?
-
hm ok,
es bleibt halt die kritische Zeile initialisiert wird die msg-Variable anständig
( da einige Messages vorm dem QUIT noch abgearbeitet werden )Ich rufe PostQuitMessage() in meiner WndProc unter WM_CLOSE auf, da läuft er gar nicht rein...
ich weiß jetzt so viel, dass nach der messagebox mein Direct Input meldet ich hätte ESC gedrückt, bei dessen behandlung ich wiederum das Programm beende,
muss vielleicht was mit dem programmfocus was zu tun haben...€dit:
Also bin mir jetzt ziemlich sicher, dass es an DInput und dem angesprochenen Focus liegt.
Falls es zufällig jemand liest der sich besser auskennt:
GetDeviceState() schlägt fehl ( DIERR_INPUTLOST ) nachdem man die MessageBox aufgerufen hat allerdings nur solange man es VOR dem MessageLoop macht.
Bin grade etwas verwirrtdanke für die Hilfe
Wh0p