wxSmith, wxFrame resize event



  • Ich bin verzweifelt auf der Suche wie ich auf ein resize eines wxFrames beispielsweise reagieren kann. Habe Code::Blocks mit wxSmith und ein kleines
    Programm erstellt. Es gibt ja einen wxEVT_SIZE den hab ich auch mal mit meinem wxFrame über Connect verbunden aber bei einem vergrößern bzw. verkleinern des Fensters wird die Methode nicht aufgerufen. Sollte doch eigentlich nicht so schwer sein oder? Hab sonst nix gefunden!

    Danke schonmal



  • Der Event sollte aber kommen, poste mal Teile des Codes.



  • Hab nen normalen wxFrame in dem sich ein paar sizer befinden und nen wxPanel.
    Im Konstruktor verbinde ich dann wie folgt:

    ...
    	Connect(ID_PANEL1,wxEVT_SIZE,(wxObjectEventFunction)&srmeFrame::OnPanelSize);
    ...
    

    und die Methode schaut dann so aus:

    void srmeFrame::OnPanelSize(wxSizeEvent &event)
    {
    	StaticText1->SetLabel(_("bla"));
    
    	tagRECT panelRect;
    	if (GetWindowRect((HWND) GetWinHwnd(IrrlichtPanel),&panelRect))
    		box.resizeWindow(int (panelRect.right - panelRect.left), int (panelRect.bottom - panelRect.top));
    }
    

    ...aber die Methode ruft er einfach nicht auf!



  • Connect(wxEVT_SIZE,wxSizeEventHandler(srmeFrame::OnPanelSize),NULL,this);
    

    Eventuell liegt es am hinteren NULL,this.
    Wenn nicht versuche das obige mal im Frame.



  • Jo das funktioniert allerdings werden meine Sizer jetzt nichtmehr mit vergrößert bzw. verkleinert! Muss ich denn die Sizer jetzt selber aktuallisieren in meiner 'OnPanelSize' Methode ? Hab es schon probiert mit Fit/FitInside und RecalcSizes aber leider ohne Erfolg.



  • rufe einfach Layout() auf, eventuell GetParent()->Layout()



  • Danke für deine Hilfe, hat funktioniert!

    Gruß


Anmelden zum Antworten