Nach Prozedurende erfolgt absturz



  • PostNcDestroy wird automatisch aufgerufen, nachdem das Fenster bzw. der Dialog eine WM_NCDESTROY-Nachricht erhalten hat. Was wurde denn in PostNcDestroy noch gemacht?



  • Es wurde bloß "delete this" und "CDialog::PostNCDestroy()" aufgerufen und deshalb ist mir beim Compilieren das Programm danach abgestürzt.



  • Mit

    delete this;
    

    wird das Dialogobjekt nach dem Schließen des Fensters automatisch gelöscht. Das funktioniert aber nur bei dynamisch erstellten Dialogen mit

    CMyDialog* pDialog = new CMyDialog;
    

    Bei auf dem Stack erzeugten Dialogen (wie bei Dir) endet es aber ganz böse, weil es hier nichts zu löschen gibt. Das Ergebnis ist dann eine Zugriffsverletzung.


Anmelden zum Antworten