Layout in Win32-GUI-Programm
Ich habe eine abstrakte Frage über die Verwendung gerade für Win32-GUI-Programmierung. Als meine einzige bisherige GUI-Erfahrung wurde in Java mit Swing bin ich verwendet, um mit einem layout-manager, der automatisch skaliert/positioniert Tasten und Sachen, wenn ein Fenster in der Größe verändert. Gibt es etwas ähnliches, das kommt in der Win32-API, oder muss man manuell neu berechnen Größen und Positionen absolute Positionen auf jedem repaint? Ich gehe davon aus, dass dies in der Tat der Weg, es zu tun, weil ich noch nicht gestolpert, über etwas, das aussieht wie layout management in der MSDN docs, aber die sind (meiner Meinung nach) ein bisschen labyrinthisch vielleicht habe ich es verpasst.
Vielen Dank für Ihre Hilfe!
- Ich habe einige code für die MFC, die möglicherweise angepasst werden, um Reine Win32-API-aufrufen: stackoverflow.com/a/5739620/5987
Du musst angemeldet sein, um einen Kommentar abzugeben.
Müssen Sie werfen Sie einen Blick auf ATL (im Lieferumfang von Visual C++), und entsprechend WTL (nicht im Lieferumfang, herunterladen müssen).
Kompilieren Sie fast völlig zu "straight Win32", während die Bereitstellung einer netten C++ - wrapper um Sie herum. Sie sind sehr leicht (fast keine Gewicht, tatsächlich-es ist die direkte Win32-für 99% der Anrufe), und doch WTL ist entworfen, um nachzuahmen, die die MFC bietet, so ist es immer noch ziemlich ausgereifter.
Müssen Sie semi-gut mit C++, aber.
Der einfachste Weg ist die Verwendung
CDialogResize<CYourDialog>
in so etwas wieDLGRESIZE_CONTROL()
ist das Herz des layout --DLSZ_MOVE_Y
zum Beispiel sagt, dass Sie verschieben möchtenIDOK
vertikal. Sie können auch gruppieren, aber es wird schwierig (manchmal ich verstehe nicht, was Los ist)... aber wenn Sie es bekommen Recht, es ist eigentlich gar nicht so schlecht. 🙂Hier ist ein self-enthalten Beispiel:
Um es zu kompilieren, müssen Sie auch eine Datei namens
resource.h
mit folgendem Inhalt in den gleichen Projektordner:Und eine Datei namens
Sample.rc
dem Projekt Hinzugefügt, die bearbeitet werden können mit Visual Studio und enthält das Dialogfeld layout:Nicht. Die Win32-API nicht enthalten code, um die Größe und Position der Steuerelemente. Sie haben zu schreiben, Ihre eigenen oder nutzen Sie die Bibliothek. Microsoft bietet ein Ressourcen-editor in Visual Studio und MFC (C++ wrapper um die API), aber keine dieser Adresse Ihren tatsächlichen problem (die Größe und Position automatisch) entweder. Ich habe verwendet wxWidgets, das ist viel homogener als MFC (meiner Meinung nach) und hat das Konzept der sogenannten "Sizer", die setzt die Größe und Position der.
Hier und hier finden Sie ein paar gute Zeit-bewährte Beispiele, wie es zu tun. Keine Notwendigkeit, das Rad neu zu erfinden.
Möglicherweise müssen Sie schauen in MFC das ist ein wrapper um die win32-was verbergen die meisten der schwierigste Teil in der GUI-Gestaltung. Es wird Ihnen ein Ressourcen-editor, wo Sie erstellen und position der Steuerelemente in einem Formular als WYSIWYG.