MFC scheint einen Mangel an Layoutmanagern / Sizern zu haben. Kaum zu glauben, dass es in einer Bibliothek für sich selbst respektierende UI keine Sizers gäbe, aber los geht's. Ich habe etwas gefunden, das sich um das übliche Box-Layout kümmern wird, aber was ich nicht gefunden habe, ist ein Sizer, der hilft, wenn Sie Objekte vertikal und horizontal ausrichten müssen, wenn sie sich ausdehnen.
Ich habe die meisten Informationen von hier bekommen:
Layout-Manager für MFC-Dialog-Apps
Ich habe das Web durchforstet und jede Suche nach MFC und grid / anything / endet damit, mich zu einer Reihe von Grid-Widgets zu schicken, nicht zu Sizern. Gibt es irgendwo so etwas?
Ich habe auch noch keine richtige vollwertige Sizer-Bibliothek für MFC gehört. Und ich glaube nicht, dass es viel Besseres gibt als die in dieser verbundenen Frage erwähnten Optionen.
In meiner Meinung bezweifle ich, dass jemals so etwas jemals gemacht wird. Andere gut etablierte GUI-Frameworks verfügen bereits standardmäßig über geeignete Sizer-Funktionen und gleichen gleichzeitig viele andere MFC-Mängel aus. Ich denke, viele würden sagen, dass es sich nicht lohnt, so etwas für MFC zu entwickeln. (Ich habe sogar einmal angefangen, an einer Art generischer Sizing-Bibliothek zu arbeiten, die auf MFC angewendet werden könnte, aber irgendwann den Ehrgeiz verloren hat und beiseite gelegt hat.)
Außerdem habe ich das Gefühl, dass Microsoft selbst MFC als Vermächtnis abgeschrieben hat und stattdessen zugunsten von .NET / C # / WPF für die GUI-Entwicklung ging. Sehen Sie sich einmal an, wie weit diese neueren Technologien in den letzten 10 Jahren fortgeschritten sind, während MFC sich über die gelegentliche Hinzufügung eines Feature Packs hinaus kaum verändert hat.
Wenn es überhaupt machbar ist, würde ich vorschlagen, in ein moderneres C ++ - Framework (wie Qt) oder .NET / C # / WPF zu wechseln (zumindest für den GUI-Teil von Anwendungen).
Ich habe vor ein paar Jahren mit WTL auf dieses "Problem" gestoßen. Ich hatte die Nase voll von komplizierten WM_SIZE-Handlern, also biss ich die Kugel und implementierte ein paar Layout-Container und passte die Win32-Steuerelemente und einige meiner eigenen an die Layout-Container an.
Ich habe grundsätzlich Unterklassen für jedes Steuerelement erstellt und ein eigenes Protokoll für "MinSize, MaxSize, PreferredSize" implementiert. Einige Steuerelemente sind schwierig zu implementieren, aber nichts ist unmöglich. Es war gar nicht so schwer, also solltest du vielleicht darüber nachdenken und es tun. MFC ist nicht so flexibel wie ATL / WTL in Bezug auf Unterklassen, aber es ist flexibel genug.
Leider kann ich den Code nicht mit dir teilen. : / Ich habe sogar eine einfache XML-Markup-Sprache hinzugefügt, die ziemlich gut war.