7

画面のサイズが変更されたときに、必要に応じて個々の項目を拡大および縮小する、非常に優れたダイアログ サイズ変更クラスを探しています。Stephan Keil には、基本的に設定された比率ですべてのサイズを変更する優れたもの (DlgResizeHelper) がありますが、私はもっとスマートなものを探しています。

例えば:

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

  • 1 行のテキスト ボックスは縦に引き伸ばされるべきではありません

  • ボタンはおそらく同じサイズのままにする必要があります

基本的に、私はすべてのコントロールを見て、静的テキストフィールドがその隣/下のコントロールに関連していることを理解し、2つを一緒に固定し、大きなコントロールを「スマート」な方法でサイズ変更して見えるようにするものを探しています良い。

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

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

4

7 に答える 7

2

コードプロジェクト、IIRC からResizableLib (PropertySheets と Pages も使用)を使用しています。ダイアログの移動に合わせて、ダイアログとコントロールがどのようにサイズ変更または移動するかを決定するアンカー ポイントを設定します。

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

于 2008-09-27T22:37:17.230 に答える
2

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

于 2008-09-27T22:45:57.927 に答える
2

私は多くのことを試し、最終的にhttp://www.codeproject.com/KB/dialog/layoutmgr.aspxに落ち着きました。ただし、提案する「インテリジェントな」レイアウトは行いません。どのライブラリでも、どのプラットフォームでも、それを見たことがありません。

于 2008-09-29T19:25:37.580 に答える
0

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

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

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

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

ソースコード

于 2008-09-28T01:29:01.777 に答える
0

ダイアログコントロールのサイズを変更するためにクラスライブラリを使用するProfessional GUIを見ることができます。それは彼らの無料版の一部だと思います。

于 2008-09-27T22:36:40.383 に答える
0

Ultimate Toolbox MFC ライブラリ (ここでは CodeProject にあります) には、レイアウト マネージャーが含まれています。私はそれを自分で使用していませんが、それはあなたが望むことをするようです.

于 2008-09-27T22:24:13.390 に答える
0

これは、CodeProject
http://www.codeproject.com/KB/dialog/dlgresizearticle.aspx
からの無料のソリューションでもあります。 これは、ダイアログのサイズが変更されたときにコントロールを配置する単純なマクロのセットです。

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

于 2008-09-27T22:28:51.213 に答える