Gottesgeschenk Geschrieben 20. Juni 2003 Geschrieben 20. Juni 2003 wiedermal ich! mein programm ist fast fertig, hat aber noch einen bug! wenn ich im menü auf beenden klicke, schliesst sich das programm vollständig und wird komplett gekillt. klicke ich oben rechts auf das "X" um das programm zu beenden, läuft es im taskmanager weiter, was es ja nich soll.. kennt jemand das problem? hab ich da einen fehler drin? case WM_DESTROY : PostQuitMessage (0) ; return 0 ; Zitieren
Guybrush Threepwood Geschrieben 20. Juni 2003 Geschrieben 20. Juni 2003 Das passiert, weil wenn du auf das X klickst nur die Nachricht WM_CLOSE gesendet wird. Versuchs mal so: case WM_CLOSE: case WM_DESTROY : { PostQuitMessage (0) ; return 0 ; } Gruß Guybrush Zitieren
Gottesgeschenk Geschrieben 20. Juni 2003 Autor Geschrieben 20. Juni 2003 das blöde programm läuft leider weiter!? :confused: ich versteh es auch nicht... Zitieren
Guybrush Threepwood Geschrieben 20. Juni 2003 Geschrieben 20. Juni 2003 kuck mal im Debuger was passiert wenn du auf das X klickst Zitieren
Shlo Geschrieben 20. Juni 2003 Geschrieben 20. Juni 2003 case WM_CLOSE: PostQuitMessage(0),DestroyWindow(hWnd); break; WM_DESTROY brauchst du nicht Zitieren
Guybrush Threepwood Geschrieben 20. Juni 2003 Geschrieben 20. Juni 2003 Original geschrieben von Rainy case WM_CLOSE: PostQuitMessage(0),DestroyWindow(hWnd); break; WM_DESTROY brauchst du nicht Das gibt ehrlich gesagt keinen Sinn;) Nach PostQuitMessage() brauchst du kein DestroyWindow() weil eh der Komplette Prozess beendet wird, außerdem sendet DestroyWindow() nur WM_DESTROY an das entsprechende Fenster. Um das Programm in jedem Fall zu beenden sollte man WM_DESTROY auch abfangen, da WM_CLOSE nur auftritt wenn man das Programm über das "X" beendet, oder halt die Nachricht selber schickt. Gruß Guybrush Zitieren
Shlo Geschrieben 20. Juni 2003 Geschrieben 20. Juni 2003 Original geschrieben von Guybrush Threepwood Das gibt ehrlich gesagt keinen Sinn;) Ich weiß Aber es funktioniert . WM_DESTROY braucht man nicht immer abzufangen... Zitieren
Guybrush Threepwood Geschrieben 20. Juni 2003 Geschrieben 20. Juni 2003 Naja, wenn dein Programm immer fehlerfrei läuft oder du es nicht per Alt+F4 beendest, dann nicht. Zitieren
Shlo Geschrieben 20. Juni 2003 Geschrieben 20. Juni 2003 Ich habe docht recht man muss WM_CLOSE abfangen, hab gerade mal ausprobiert: case WM_CLOSE: PostQuitMessage(0); break; ...funktioniert wenn ich ALT+F4 drücke und das hier nicht case WM_DESTROY: PostQuitMessage(0); break; ist 'ne Dialogbasierte Anwendung btw Zitieren
Guybrush Threepwood Geschrieben 20. Juni 2003 Geschrieben 20. Juni 2003 Komisch, es scheint da wohl einen Unterschied zwischen Dialogfeld bsierenden und "normalen" Anwendungen zu geben. Zitieren
ITSE Geschrieben 23. Juni 2003 Geschrieben 23. Juni 2003 wenn es eine Dialogbasierte Anwendung ist, (ich denke du benutzt VC++6) dann erzeuge doch mit dem Assi eine Neue, da funktioniert dann auch das Beenden wieder so wie gewünscht und kopierst dann alles was du brauchst... Aber wie gesagt, ist nur für VC++6 gültig... mit was anderem hab ich noche keine Erfahrung gemacht Zitieren
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.