Fenstergrösse dynamisch ändern
-
Hallo zusammen
Hoffe, dass mir jemand helfen kann. Ich habe ein Programm, welches beim Start nach Eingabe entweder 6, 8 oder 10 Checkboxes untereinander anzeigt. Jetzt will ich je nach Anzahl Checkboxes dieses Fenster verkleinern, damit es besser aussieht. Kann mir da jemand behilflich sein?freundliche Grüsse
LeChief01
-
1. Die Checkboxen, die Du nicht brauchst mit ShowWindow(SW_HIDE) verstecken und mit EnableWindow disablen.
2. Mit GetWindowRect, die Position der letzten Checkbox ermitteln.
3. Mit ScreenToClient to Koordinaten umwandeln.
4. Ein wenig rechnen.
5. MoveWindow/SetWindowPos anwenden.
-
Das kannst du z.B. mit SetWindowPos oder MoveWindow machen.
-
okay vielen dank für die rasche antwort. werde das jetzt mal versuchen..
-
also ich bins nochmal
ich habs nicht hingekriegt.. bin eben ein neuling in der mfc programmierung.. wie könnte denn der code aussehen? hab da keinen plan wie ich anfangen muss? muss ich da etwas mit CDialog machen?
-
Martin hat dir doch eine schöne, nummerierte Anleitung geschrieben. Mit welchem Punkt genau hast du denn Probleme?
-
ja wie kann ich mit GetWindowRect die Position herausfinden? Ich habe Probleme, wie ich die Syntax des Codes aufstellen soll.. Und dies für alle Befehle... Bin wirklich ein Neuling

-
habs hingekriegt
endlich wieder mal ein erfolgserlebnis.. für anfänger ist das wichtig...
jetzt habe ich aber ein anderes problem.. unten rechts befinden sich noch die 2 Buttons "0k" und "Cancel"..
Wie kann ich jetzt diese auch nach oben schieben, damit ich sie sehe, wenn das fenster kleiner wird?
-
Du bietest dem Benutzer irgendeine Eingabe und lässt im Anschluss in einem entsprechenden Event-Handler deine Checkboxen anzeigen (oder eben nicht), richtig? In diesem Handler kannst du dann auch gleich ansetzen. Hast du zu den Checkboxen Control-Variablen angelegt, oder nimmst du GetDlgItem, um darauf zuzugreifen?
So in etwa könntest du die Abmessungen einer CheckBox holen (aus dem Kopf und ohne Gewähr
):CRect rc; //hiermit willst du die Daten speichern, die GetWindowRect speichert //mit Control-Variable m_ctlCheckBox1.GetWindowRect(rc); //oder mit GetDlgItem GetDlgItem(IDC_CHECKBOX1)->GetWindowRect(rc);Nur so als Denkanstoß...
Aber am besten wäre es, du zeigst einfach mal den Code, in dem du die CheckBoxen platzierst und anzeigst.
-
LeChief01 schrieb:
habs hingekriegt
endlich wieder mal ein erfolgserlebnis.. für anfänger ist das wichtig...
jetzt habe ich aber ein anderes problem.. unten rechts befinden sich noch die 2 Buttons "0k" und "Cancel"..
Wie kann ich jetzt diese auch nach oben schieben, damit ich sie sehe, wenn das fenster kleiner wird?MoveWindow oder SetWindowPos.
-
okay.. habs jetzt.. vielen dank matze.. ja arbeite mit GetDlgItem
habe einen dummen fehler gemacht. da ich beim fenster verkleinern, die höhe ja kleiner machen musste, hab ich bei den buttons auch dort herumgepröbelt... und jetzt schlussendlich das top verändert.. dummer fehler.. ganz dumm

auf jedenfall funktioniert jetzt alles...
Vielen dank