wxWidgets: Sizer bei OnSize() aktualisieren
-
Hi,
ich habe schon alles durchsucht, die offizielle Dokumentation, das wxWiki und bei Google habe ich auch nichts gefunden. Kann mir jemand sagen wie ich die Sizer in OnSize() aktualisieren kann?
Das Problem ist: Die Sizer funktionieren super bis, ich die Methode OnSize() selbst bearbeite. Es müssen irgendwelche Methoden-Aufrufe fehlen, um die Sizer manuell zu aktualisieren. Nur welche? Mit Layout() (Sizer- und Window-Methode) funktioniert es nicht.
Wäre dankbar für jede Hilfe (wäre meine erste bei mittlerweile drei gestellten Fragen). Aber die Hoffnung stirbt ja bekanntlich zu letzt.
MfG WilMen
-
event.Skip() in deinem OnSize() vergessen, so dass der Sizer es nicht mehr mitkriegen kann?
-
Hi Frenki,
danke für die schnelle Antwort.
Das hatte ich auch schon probiert nur kann ich dann kein OnPaint() mehr mittels
Refresh(FALSE, NULL) ;
auslösen und das direkte Aufrufen (von OnPaint())sowie die Erledigung der Zeichenarbeiten in OnSize() selbst funktionieren dann auch nicht mehr.
MfG WilMen
-
WilMen schrieb:
Hi Frenki,
danke für die schnelle Antwort.
Das hatte ich auch schon probiert nur kann ich dann kein OnPaint() mehr mittels
Refresh(FALSE, NULL) ;
auslösen und das direkte Aufrufen (von OnPaint())sowie die Erledigung der Zeichenarbeiten in OnSize() selbst funktionieren dann auch nicht mehr.
MfG WilMen
Hm, hört sich reichlich komisch an für mich.
Zeig doch mal etwas mehr Code, so kann man ja nur Raten.
Und Refresh() hab ich bisher immer nur ohne Argumente aufgerufen.phlox
-
Hi phlox81,
kannst du mir nicht einfach eine manuelle Möglichkeit nennen, wie ich die Sizer update (Ausgangsfrage). Es muss doch auch ohne event.Skip() gehen, weil ich dies eigentlich nciht benutzen wollte.
MfG WilMen
-
Normalerweise passiert das ja auch automatisch wenn du OnSize nicht überschreibst. Daher muss du das event.Skip() dort machen afaik.
-
OK, was für eine Methode möchtest du sehen? Der Quelltext ist zu lang um alles zu posten.
Edit: Habs nochmal getestet. OnPaint() wird aufgerufen. Nur scheitern die Versuche auf den in OnPaint() mittels
wxPaintDC pntdc (this) ;
angelegten DC zu zeichnen.
MfG WilMen
-
Dann zeig ein minimales Beispiel von deinem Problem, so kann ich wirklich nicht viel dazu sagen.
Evtl. schaust du dir mal die wxWidgetstutorials im Magazin an.
-
Nach reichlich Nachdenken ist es mir bewusst geworen! Zur Ausrichtung meiner Controls ist die gesamte Client Area mit Panels überdeckt (im Prinzip wie hier http://zetcode.com/tutorials/wxwidgetstutorial/layoutmanagement/ im Beispiel "Align"), die die gleiche Farbe wie der Hintergrund des Frames haben. Folglicherweise konnte ich so das Gezeichnete nicht sehen. Davor machte ich schon Versuchte anders zu testen ob OnPaint() noch aufgerufen wird, diese waren natürlich positiv.
Trotzdem danke für alle Hilfe!
MfG WilMen