Exceptionhandling für modale Dialoge



  • Ich versuche einen modalen Dialog in einem Try Block aufzurufen und möchte Exceptions außerhalb des Dialogs abfangen.

    Im Hauptprogramm mach ich dann folgendes:

    Login loginDialog;
    	try
    	{
    		loginDialog.DoModal();
    	}
    	catch(char* errorString)
    	{
    		MessageBox(errorString);	// show error
    	}
    

    Wobei Login von CDialog abgeleitet ist und in einer beliebigen Methode Exceptions wirft.

    Falls etwas geworfen wird, bekomme ich immer diese Warnung in VS angezeigt:

    Warning: calling DestroyWindow in CDialog::~CDialog --
    OnDestroy or PostNcDestroy in derived class will not be called.

    Und die Anwendung friert ein. Wie kann ich nun von außerhalb das ganze beenden? Wenn ich im catch Block einfach "EndDialog" aufrufe, friert die Anwendung nicht mehr ein, zeigt mir aber dennoch die Warnung in Visual Studio


  • Mod

    Grundsätzlich: Exceptions dürfen nicht über Windows Callback Grenzen hinweg geworfen werden! Was Du hier machst ist nicht erlaubt.
    Die aufgerufenen internen Windows Funktionen würden mit Deiner C++ Exception nicht klar kommen.

    BTW: Normalerweise hat eine MFC WndProc einen Handler für CExpetion* Objekte und behandelt diese genau aus diesem Grund!


Anmelden zum Antworten