[c++] Windows C ++ - Dialog-Resizer-Klasse


2 Answers

Ich verwende ResizableLib (auch PropertySheets und Pages) von Codeproject, IIRC. Sie legen Ankerpunkte fest, die festlegen, wie das Dialogfeld und die Steuerelemente beim Verschieben des Dialogfelds ihre Größe oder ihre Größe ändern.

Sie können bis zu 2 Anker pro Steuerelement festlegen (links, rechts), damit Sie sie beim Bewegen des Dialogfelds verschieben oder ihre Größe ändern können. Es ist sehr leicht zu verstehen, wenn es schwierig ist, perfekt zu sein :)

Question

Ich suche nach einer wirklich guten Dialog-Resizer-Klasse, die einzelne Elemente nach Bedarf dehnt und verkleinert, wenn die Größe des Bildschirms geändert wird. Stephan Keil hat einen guten (DlgResizeHelper), der im Grunde alles in einem festen Verhältnis skaliert, aber ich suche etwas Klügeres.

Beispielsweise:

  • Die Größe der Symbole sollte nicht geändert werden

  • Einzeilige Textfelder sollten nicht vertikal gestreckt werden

  • Tasten sollten wahrscheinlich gleich groß bleiben

Im Grunde suche ich nach etwas, das alle Steuerelemente betrachtet, herausfinden, dass ein statisches Textfeld mit einem Steuerelement next / below zusammenhängt und die beiden zusammen verankert und die Größe großer Steuerelemente auf eine "intelligente" Art und Weise so verändert, dass sie aussieht. gut.

Gibt es solche Frameworks da draußen? Ich habe an einem gearbeitet, aber etwas Konfektion wäre wahrscheinlich besser.

FOLLOW UP: Ich schaue mir die vorgeschlagenen Lösungen an. Bei vielen von ihnen müssen Sie jedes Steuerelement im Dialogfeld verankern. Ich suche nach etwas Klugem, das herausfinden wird, was die Anker sein sollten, mit der Fähigkeit, manuell zu verankern, wenn die Vermutungen falsch sind. Es scheint so, als ob es möglich sein sollte - die meisten Menschen würden zustimmen, dass ein statisches Textfeld neben einem Editierfeld zusammen verankert werden sollte. Ich glaube, ich bin fast auf der Suche nach einer kleinen KI hier :)




Wir verwenden CResize-Klasse von CodeGuru, um alle Steuerelemente automatisch zu ändern. Sie sagen, wie die Größe jedes Steuerelements angepasst werden soll, und es erledigt die Aufgabe für Sie.

Das Größenanpassungsparadigma gibt an, wie stark sich jede Seite eines Steuerelements bewegen wird, wenn die Größe des Dialogfelds geändert wird.

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

Sehr praktisch, wenn Sie viele Dialogsteuerungen haben.

Quellcode




Die Ultimate Toolbox MFC-Bibliothek ( hier in CodeProject) enthält einen Layout-Manager . Ich habe es nicht selbst benutzt, aber es sieht so aus, als würde es das tun, was Sie wollen.




Related