Frage

Ich bin auf der Suche nach einer wirklich guten Dialog Resizer Klasse, die einzelne Elemente dehnen und schrumpfen je nach Bedarf wie der Bildschirm der Größe verändert wird. Stephan Keil hat einen guten (DlgResizeHelper), die im Grunde alles, was durch einen Satz Verhältnis ändert die Größe, aber ich bin auf der Suche nach etwas schlauer.

Zum Beispiel:

  • Icons sollten nicht die Größe

  • Einzeilige Textfelder sollten nicht vertikal gestreckt werden

  • Buttons sollten wahrscheinlich die gleiche Größe bleiben

Im Grunde ich bin auf der Suche nach etwas, an all Steuerelemente zu suchen, herauszufinden, dass ein statisches Textfeld mit einer Steuer zusammenhängt darunter neben / und die beide zusammen zu verankern, und die Größe große Kontrollen in einer intelligenten Art und Weise so es sieht gut aus.

Gibt es solche Frameworks da draußen? Ich habe auf einem Arbeits aber etwas fertigter wäre wahrscheinlich besser.

FOLLOW UP: Ich freue mich auf die vorgeschlagenen Lösungen. Viele von ihnen verlangen, dass Sie in einem Anker auf dem Dialog jede Steuer gehen. Ich bin auf der Suche nach etwas, das Smart wird herausfinden, was der Anker sein sollte, mit der Möglichkeit, manuell zu verankern, wenn die Vermutungen falsch sind. Scheint, wie es möglich sein sollte - die meisten Menschen ein statisches Textfeld neben einem Eingabefeld zusammen verankert zustimmen würde werden sollte. Ich glaube, ich bin fast ein wenig AI suche hier:)

War es hilfreich?

Lösung

Sie können wxWidgets verwenden. Es ersetzt vollständig MFC, ist Multi-Plattform, und gibt Ihnen ein Layout-basierten Dialogmechanismus.

Andere Tipps

ich ResizableLib (auch tut Property und Pages) aus Codeproject, IIRC. Sie stellen Ankerpunkte, die bestimmen, wie der Dialog und steuert die Größe oder den Dialog bewegt sich bewegen.

Sie können bis zu 2 Anker pro Steuerung eingestellt, (links, rechts), damit Sie sie als Dialog bewegt sich bewegen oder die Größe ändern, wie es sich bewegt. Es ist sehr leicht zu verstehen, wenn schwer zu bekommen vollkommen richtig:)

Ich habe versucht, viele und schließlich ließ sich auf http: //www.codeproject. com / KB / dialog / layoutmgr.aspx . Es ist nicht das ‚intelligente‘ Layouten, die Sie allerdings vorschlagen. Ich habe noch nie, dass in jeder Bibliothek, auf jeder Plattform zu sehen. - Ich sehe nicht, wie es ohne viel unter der Haube Magie arbeiten würde, die ohnehin außer Kraft gesetzt werden die Hälfte der Zeit haben würden,

Die ultimative Toolbox MFC-Bibliothek ( hier auf Codeproject) a enthält < a href = "http://www.codeproject.com/KB/MFC/UltimateToolbox_Layout.aspx" rel = "nofollow noreferrer"> Layout-Manager . Ich habe es selbst nicht benutzt, aber es sieht aus wie es das tut, was Sie wollen.

können Sie schauen auf Professionelle GUI wir ihre Klassenbibliothek verwenden für unsere Dialogfeld-Steuerelemente Größe ändern. Ich denke, dass ein Teil ihrer freien Version ist.

Wir verwenden CResize Klasse von MS-Office alle Steuerelemente automatisch zu ändern. Sie sagen, wie Sie jede Steuer wollen die Größe verändert werden und es macht den Job für Sie.

Das Resize-Paradigma ist zu bestimmen, wie viel jeder Seite einer Steuerung bewegt sich, wenn der Dialog der Größe verändert wird.

SetResize(IDC_EDIT1, 0,   0,   0.5, 1);
SetResize(IDC_EDIT2, 0.5, 0,   1,   1);

Sehr praktisch, wenn Sie eine große Anzahl von Dialogelementen.

Quellcode

Dies ist eine kostenlose Lösung auch von Codeproject
http://www.codeproject.com/KB/dialog/dlgresizearticle.aspx
Es ist nur eine Reihe von einfachen Makros, die Position steuert, wie der Dialog ändert die Größe.

Bearbeiten - im Anschluss an den OPs Kommentare. Ich weiß nicht, von einer allgemeinen Sizer Unterstützung wie QT / WX für MFC, es scheint nicht in neuen Frameworks wie WinForms anwesend zu sein.
Es ist in QT / WX, weil es für mehrere Plattformen notwendig ist, wo Widgets eine andere Größe sein, die MS Mangel an ihm erklärt. Aber es ist auch wichtig für mehrsprachige Schnittstellen, zB. wo die deutsche für stornieren 30 Zeichen lang sein.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top