質問

画面のサイズが変更されると、必要に応じて個々のアイテムを伸縮する、本当に優れたダイアログリサイザークラスを探しています。 Stephan Keilには、基本的にすべてを設定された比率でサイズ変更する優れたもの(DlgResizeHelper)がありますが、よりスマートなものを探しています。

例:

  • アイコンのサイズを変更しないでください

  • 単一行のテキストボックスは縦方向に引き伸ばさないでください

  • ボタンはおそらく同じサイズのままでなければなりません

基本的に、すべてのコントロールを調べて、静的テキストフィールドがその次/下のコントロールに関連していることを確認し、2つを固定し、「スマート」な方法で大きなコントロールのサイズを変更しますよさそうだ。

そのようなフレームワークはありますか?私は1つに取り組んできましたが、おそらく既製のものが良いでしょう。

フォローアップ:推奨される解決策を検討しています。それらの多くは、ダイアログ上の各コントロールをアンカーに入れる必要があります。アンカーがどうあるべきかを理解し、推測が間違っている場合に手動でアンカーできる機能を備えたスマートなものを探しています。可能性があるように思えます-ほとんどの人間は、編集フィールドの隣の静的テキストフィールドを一緒に固定することに同意するでしょう。ここで少しAIを探しているところだと思います:

役に立ちましたか?

解決

wxWidgetsを使用できます。 MFCを完全に置き換え、マルチプラットフォームであり、レイアウトベースのダイアログメカニズムを提供します。

他のヒント

ResizableLib (PropertySheetsおよびPagesも実行)codeproject、IIRCから。ダイアログの移動に応じてダイアログとコントロールがどのようにサイズ変更または移動するかを決定するアンカーポイントを設定します。

コントロールごとに最大2つのアンカー(左、右)を設定して、ダイアログの移動に応じて移動したり、移動に応じてサイズを変更したりできます。完全に正しく理解するのが難しい場合、非常に理解しやすいです:)

多くのことを試しましたが、最終的に http://www.codeprojectで解決しました。 com / KB / dialog / layoutmgr.aspx 。あなたが提案する「インテリジェントな」レイアウトは行いません。どのライブラリでも、どのプラットフォームでも、それを見たことはありません-とにかく半分の時間でオーバーライドしなければならない内部の魔法をたくさん持たないと、どのように機能するかわかりません。

Ultimate Toolbox MFCライブラリ(ここにはCodeProjectに< href = "http://www.codeproject.com/KB/MFC/UltimateToolbox_Layout.aspx" rel = "nofollow noreferrer">レイアウトマネージャー。私はそれを自分で使用していませんが、あなたが望むことをするようです。

プロフェッショナルGUI をご覧ください。ダイアログコントロールのサイズ変更にクラスライブラリを使用しています。これは無料版の一部だと思います。

CodeGuruのCResizeクラスを使用して、すべてのコントロールのサイズを自動的に変更します。各コントロールのサイズをどのように変更するかを指示すると、それが自動的に機能します。

サイズ変更パラダイムは、ダイアログのサイズが変更されたときにコントロールの各側がどれだけ移動するかを指定することです。

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

多数のダイアログコントロールがある場合に非常に便利です。

ソースコード

これはCodeProjectからの無料ソリューションです
http://www.codeproject.com/KB/dialog/dlgresizearticle.aspx
ダイアログのサイズ変更に応じてコントロールを配置する単純なマクロのセットにすぎません。

編集-OPコメントに従ってください。 MFCのQT / WXなどの一般的なサイザーサポートについては知りません。Winformsなどの新しいフレームワークにも存在しないようです。
QT / WXには、ウィジェットが異なるサイズのマルチプラットフォームで必要であるため、MSの欠如が説明されています。しかし、多言語ポートの場合にも重要です。キャンセルするドイツ語の長さは30文字です。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top