Position Ermitteln
-
najo ich arbeite in den programm hauptsaechlich ohne dialog - problem hab ich keines - ohne dialoge zu arbeiten ist bei diesem sinnfoller
-
berechen? Rand + Anzahl der anderen Buttons oder sonst was
-
bisher berechne ich es ja, das ich sag rect.left+20 usw, aber rausfinden wieviel + und - ich machen muss damits passt ist muehseelig /=
-
Ne glaub er meint richtig rechnen
.Also mal angenommen Du willst ein paar Button am unteren Rand gleichmäßig verteilen.
Wenn sich die Größe des Parent-Fensters ändert, werden alle Buttons entsprechend angepasst (WM_SIZE).Grafisch sähe das so aus:
|--------------------------------| | /!\ Titelleiste _ [] X | |--------------------------------| | | | | | | | | | [Btn1] [Btn2] [Btn3] [Btn4] | |--------------------------------|Bei vergrößerung sähe das dann beispielsweise so aus (nur damit klar ist, wie ichs meine):
|----------------------------------------| | /!\ Titelleiste _ [] X | |----------------------------------------| | | | | | | | | | [ Btn1 ] [ Btn2 ] [ Btn3 ] [ Btn4 ] | |----------------------------------------|Sowas lässt sich doch relativ einfach berechnen ? Da brauchste nix probieren
.
-
Mr Evil schrieb:
wie macht ihr das ?
Sowas machen "wir" garnicht, weil man es kaum mal braucht, also "freie" Buttons in einem Fenster, so ganz ohne Dialog.
gibts da ein guten trik oder eine gute methode sowas an zu gehen ?
danke schonmal
Du kannst dir ja mal die Layout Sachen von Java (Swing/AWT) angucken...
-
das was du da zeigst ist schon klar - so mach ich das ja bisher auch
das "problem" dabei ist das allererste erstellen - dh
du sagst "Unten verteilen"dann muss man ueberlegen - wieviel pixel von unten - wenn noch andere elemente da rueber sollen muss man ueberlegen
wie gross sind die buttons, und wieviel pixel abstand von den vorderen - sind die gross genug fuer den text -oben rechts soll ein element
also
rect.right-105, rect.top+5, 100, 20; // button 5 von rechts, 5 von oben und breite 100 sowie hoehe 20 pixel //dann soll nu ein button schraeg darunter rect.right-205, rect.top+25, 100, 20; // genau die vorherigen buttonlaenge weiter vor und selbe hoehe darunter |--------------------------------| | /!\ Titelleiste _ [] X | |--------------------------------| | [Btn1] | | [Btn2] | | | | | | | |--------------------------------|das ist noch ein simpleres beispiel, aber bei meheren radiobuttons und anderen elementen wirds recht kompliziert, das ist das nervige, und da dacht ich gibts evtl irgendein trick {o;
-
Ich weiß nicht, ob das für dich ein Trick ist, aber ich hab das schon nen paar mal so gemacht:
Einen Dialog mit nem Ressourcen-Editor erstellt, so wie dann halt das Fenster aussehen soll.
Allen Items im Dialog hab ich einen Border gegeben, damit man die Ausmaße sieht.
Ein Screenshot vom Fensterinhalt. Das geht z.B. mit Paintshop Pro. Dann hast du nämlich alle Positionen relativ zum Client-Bereich deines Fensters. Und die Bildgröße des Screenshots entspricht den Pixel-Ausmaßen deines Fensters.
Alternativ nen Overall-Screeni und auf den Client-Bereich beschränken.
In deinem Bildbearbeitungsprogramm jeweils ein Item mit dem Auswahlrechteck umranden, Koordinaten und Größe (ist ja in Pixel) aus der Statusleiste ablesen und aufschreiben (oder merken, war mir aber zu hoch^^).Dann haste deine Koords und Ausmaße deiner Items. hf
-
Jo aber das was Du 'mit der Hand' (eben TryAndError) machst, machen andere auch, nur eben mit dem Resourcen-Editor. Die haben eben 'WYSIWYG' dabei, das vereinfacht die Gestaltung natürlich erheblich.
So wie Badestrand mache ich das teilweise auch. Das funktioniert eigentlich ganz gut.
-
hei coole idee {= werd ich mir merken, ma schaun ob ich hier ein freeware paint programm find was des kann - vielen dank {=
-
MS Paint
.Oder Du nimmst Photoshop *grinz* .
-
Hmm Ich weis nicht ob ich dich richtig Verstanden habe aber ist dein Problem das wenn das Fenster zu klein ist das die ganzen Buttons usw. sich Überschneiden würden?
Dann erstell dein Fenster in der minimalsten Größe wo noch alles raufpasst und nichts sich überschneidet und Sortier alles so das alles "schön aussieht". Diese Größe legst du dann als "Minimalgröße" des Fensters fest. D.h. kleiner kann der User das Fenster nicht machen. Wenn der User das Fenster aber größer zieht, verschiebst du die Buttons usw. proportional zum "größer ziehen". So solltest du immer ein gleiches Layout haben und die gewissheit das keine Buttons oder so sich überschneiden.
Wenn Ich dich Falsch verstanden habe dann vergiss das ganze
[edit] oh ich habe gerade gesehen du hast ja schon ein Thread aufgemacht wegen Minimalgröße. Dann hast du das wohl schon und kannst das ganze vergessen

[/edit]MfG schirrmie
-
nene, wegen ueberschneiden geht es nicht
es geht einfach darum rauszufinden an welder position man ein button erstellen muss
wenn man ein button per CreateWindow erstellt moechte er doch wissen wohin und wie gross,
und das rausfinden find ich {mit try and error} sehr muehseeligmal noch ein beispiel
4 buttons direkt nebeneinander von rechts unten
//rect ist fenstergroesse //weite und hoehe wurde rausgefunden durch try & error //Button links, oben, weite, hoehe - Button 1: rect.right-200, rect.bottom-20, 125, 20, - Button 2: (rect.right-200)-125, rect.bottom-20, 115, 20, - Button 3: ((rect.right-200)-125)-115, rect.bottom-20, 97, 20, - Button 4: (((rect.right-200)-125)-115)-97, rect.bottom-20, 102, 20,da sind die werte noch hard coded durch ueberlegen, weiss grad nicht obs so richtig ist, aber das ist ein beispiel wie ich das meine