Gültigkeit eines Framepointers überprüfen



  • Hallo,
    ich habe hier eine Anwendung, die einen Frame und ein Panel hat. In diesem Panel ist ein Button, mit dem man sich eine Grafik ausgeben lassen kann. Dazu habe ich einen zweite Frameklasse (CGrafikframe::wxFrame) angelegt.
    In der Panelklasse habe ich einen Pointer CGrafikframe *m_grafikframe. Dieser wird im Konstruktor der Paneklasse auf NULL gesetzt.
    Den zweiten Frame erzeuge ich mit m_grafikframe = new CGrafikframe(); m_grafikframe->Show(TRUE). Soweit klappt das alles.
    Aber nun muß ich aus verschiedenen Gründen wissen, ob dieser Frame noch angezeigt wird oder ob er vom User geschlossen wurde (zum Beispiel über den Close-Button oben rechts).
    Eine Prüfung auf NULL funktioniert nur beim ersten Mal bevor der Grafikframe angelegt wurde (durch die Anweisung im Konstruktor). Danach ist m_grafikframe niemals mehr NULL, wie auch.
    Alle Memberfunktion die ich probiert habe (AcceptFous(),IsValid()...) lösen eine Exception aus....
    Wie kann ich nun überprüfen ob das Grafikfenster geöffnet ist oder nicht ?
    Oder muß ich echt die Exception abfangen....

    Greets
    Grieko



  • Das Abfangen einer Exception funktioniert leider auch nicht, ich habe jetzt folgenden Code probiert, aber es tritt immer noch eune "Unhandlet Exception" auf

    try
    	{
    		m_grafikframe->SetFocus();
    	}
    	catch (...)
    	{
    		m_grafikframe = new Grafikframe();
    		m_grafikframe->Show( TRUE );
    	}
    


  • Wie kann ich nun überprüfen ob das Grafikfenster geöffnet ist oder nicht ?

    Du setzt extern ein Flag beim Schliessen.



  • Dazu muß aber die Panelklasse einen Zeiger auf sich selbst an die Grafikflameklasse übergeben....
    Gibts keine einfachere Lösung ?


  • Mod

    Kannst du nicht für den Close Event einen Handler in der Panel Klasse bereitstellen, welchen du dann mit dem CloseEvent des Frames verbindest?



  • Das Problem ist dabei folgendes:
    Wenn ich das Grafikfenster, also die Grafikframeklasse, über das Menü (Datei-->Schliessen) beende, dann wird ein OnClose-Event ausgelöst.
    Wenn ich das Fenster aber über den Close-Button in der oberen rechten Ecke schliesse, dann nicht!


  • Mod

    Da sagt die Doku von wxFrame aber was anderes, wxCloseEvent müsstest du halt entsprechend behandeln:
    http://docs.wxwidgets.org/trunk/classwx_close_event.html


Log in to reply