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


Anmelden zum Antworten