GUI vergrössern und verkleinern
-
Gibt es irgendwo ein Tutorial, wie ich die GUI so programmiere, dass sie keine fixe Größe hat? Ich bins ja bei Delphi gewohnt, dass man nur Anker definieren muss, aber bei C++ ist die Sache umständlicher oder?
-
Da ist der FAQ-Beitrag dazu:
http://www.c-plusplus.net/forum/viewtopic-var-t-is-39118.html
...auch mit einem weiterführenden Link zu einer Klasse, die das kann.
Ansonsten selber machen mit GetNextTabItem(...) (oder hiesse es GetNextDlgTabItem ?!?) durch alle Steuerelemente durch gehen und Grösse neu berechnen.
-
Hmmm wodurch wird denn OnSize aufgerufen? Ich habe dieses hier mal reinprogrammiert, aber wenn ich das Formblatt vergrössere, wird dieser Code niemals durchlaufen:
void CMainDlg::OnSize(UINT nType, int cx, int cy) { AfxMessageBox("bin im Code drin"); CDialog::OnSize(nType,cx,cy); if (!GetSafeHwnd()) return; CRect rect; GetClientRect(rect); m_bClose.MoveWindow(10,0,10,0); //testweise einfach mal den Button bewegen }
-
ON_WM_SIZE()
...in der MessageMap ?
-
isabeau schrieb:
ON_WM_SIZE()
...in der MessageMap ?Genau das hatte ich vergessen
Bekomme jetzt noch eine Exception, weil OnSize so früh aufgerufen wird, aber das bekomme ich sicher noch in den Griff.
-
JPSelter schrieb:
aber das bekomme ich sicher noch in den Griff.
... oder auch nicht. Dachte, das "GetSafeHwnd" sollte das abschalten, aber ich bekomme diese Exception nicht weg. Wenn ich auf Ignorieren klicke, startet das Programm dennoch.
-
Das GetSafeHwnd kann man sich sparen, wenn man sich eine bool Variable erstellt, die erst von OnInitDialog auf TRUE gesetzt wird. Dann gibts keine Exceptions mehr.
-
Bekommt man eigentlich diese Darstellungsfehler irgendwie weg, wenn man das Fenster grösser oder kleiner zieht? Das sieht teilweise ziemlich seltsam aus...