Veröffentlicht 20. Juni 200322 j 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 ;
20. Juni 200322 j 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
20. Juni 200322 j case WM_CLOSE: PostQuitMessage(0),DestroyWindow(hWnd); break; WM_DESTROY brauchst du nicht
20. Juni 200322 j 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
20. Juni 200322 j Original geschrieben von Guybrush Threepwood Das gibt ehrlich gesagt keinen Sinn;) Ich weiß Aber es funktioniert . WM_DESTROY braucht man nicht immer abzufangen...
20. Juni 200322 j Naja, wenn dein Programm immer fehlerfrei läuft oder du es nicht per Alt+F4 beendest, dann nicht.
20. Juni 200322 j 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
20. Juni 200322 j Komisch, es scheint da wohl einen Unterschied zwischen Dialogfeld bsierenden und "normalen" Anwendungen zu geben.
23. Juni 200322 j 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
Archiv
Dieses Thema wurde archiviert und kann nicht mehr beantwortet werden.