DoModal verhindert saubere Terminierung der MFC-Anwendung
-
Servus,
ich kämpf gerade mit einem sehr weirdem Problem.
Ich habe innerhalb eines Tabs die Möglichkeit per Button eine Datei zu öffnen:
/**************************************************************************************************/ void CVirtualSpaceDlg::OnBnClickedButtonOpen() /**************************************************************************************************/ { // TODO: Add your control notification handler code here CFileDialog dlgOpenDialog(TRUE); // Run dialog int nReturn = dlgOpenDialog.DoModal(); if (nReturn == OPEN_CANCELLED) return;
Sobald der Nutzer auf diesen Knopf gedrückt hat und dann beispielsweise auf Cancel im FileDialog drückt und versucht die Hauptanwendung zu schließen, lässt sich das Programm nicht mehr beenden, sondern freezt bzw. der Debugger bleibt stehen.
Ich habe dann mal bis zur entsprechenden Stelle debuggt und bin in der
"crt0dat.c" an folgender Stelle hängen geblieben:void __cdecl __crtExitProcess ( int status ) { __crtCorExitProcess(status); /* * Either mscoree.dll isn't loaded, * or CorExitProcess isn't exported from mscoree.dll, * or CorExitProcess returned (should never happen). * Just call ExitProcess. */ ExitProcess(status); }
status ist 20 und ExitProcess(winbase.h) bringt dann den Freeze.
Wird meine Funktion OnBnClickedButtonOpen nicht aufgerufen, dann geht er sauber über ExitProcess drüber.
Hat jemand eine Idee?
/edit
Das ganze passiert unter WinXP.
Unter 7 gehts. Jeweils mit VS 2005