TCustomForm::OnResize wird bei Programmende aufgerufen



  • Hi,
    ich glaub die Überschrift sagt schon viel ^^. Ich hab gesucht, seltsamerweise nix gefunden.
    Problem ist nämlich dass das Event TCustomForm::OnResize bei Programmende aufgerufen wird, und das möchte ich nicht haben. Weil es Fehler verursacht ^^.
    Wie kann ich das verhindern?



  • Ich würde lieber die Anwendung so umschreiben das sie keine Fehler mehr verursacht.



  • Das habe ich versucht.
    Also ich hab nämlich neben der Form mit dem OnResize Event noch eine andere Form.
    Das sieht ungefähr so aus:

    MainForm::Resize(..)
    {
    [...]
      if(Frame_twF!=NULL) Frame_twF->RefreshBounds();
    }
    

    Problem: Wenn das programm beendet wird und das ResizeEvent aufgerufen wird, existiert die From Frame_twF anscheinend nicht mehr. Und das verursacht natürlich Fehler - die if(Frame_twF!=NULL) Abfrage hat leider nix geholfen, das hat mich dazu gebracht halt nach einer anderen Lösung zu suchen _.



  • Hallo

    der Fehler liegt wahrscheinlich daran, das Frame_twF schon gelöscht wurde (durch die App), aber eben nicht NULL ist.
    Entweder sorgst du dafür, das Frame_twF nach dem Löschen NULL ist, oder du merkst dir, wenn MainForm geschlossen wird, also die App beendet werden wird, und fragst diesen Status vor der Aktualisierung von Frame_twF ab in OnResize ab.

    bis bald
    akari



  • Entweder sorgst du dafür, das Frame_twF nach dem Löschen NULL ist

    Kann ich das so machen (funktionieren tut es shcon, aber ich bin mir nicht ganz sicher ob das Memory Leaks verursacht oder nicht):

    TFrame_twF::OnDestroy(...){ Frame_twF = NULL; }
    


  • Hallo

    das es funktioniert, wundert mich. Ich würde es nicht so machen.
    Aber zum Thema OnDestroy, das hatten wir erst vor kurzem :
    http://www.c-plusplus.net/forum/viewtopic.php?t=96491&start=10
    ganz unten.

    bis bald
    akari



  • Also soll ich das Frame_twF = NULL in dem Destruktor der Form setzen?


Log in to reply