7

我正在寻找一个非常好的对话框调整器类,它可以在调整屏幕大小时根据需要拉伸和收缩各个项目。Stephan Keil 有一个很好的 (DlgResizeHelper),它基本上可以按设定的比例调整所有内容的大小,但我正在寻找更智能的东西。

例如:

  • 图标不应调整大小

  • 单行文本框不应垂直拉伸

  • 按钮应该保持相同的大小

基本上我正在寻找一些东西来查看所有控件,找出一个静态文本字段与它旁边/下方的控件相关并将两者锚定在一起,并以“智能”方式调整大型控件的大小,使其看起来好的。

有这样的框架吗?我一直在做一个,但现成的东西可能会更好。

跟进:我正在查看建议的解决方案。其中许多要求您在对话框上的每个控件中加入一个锚点。我正在寻找一些聪明的东西,它可以弄清楚锚点应该是什么,如果猜测错误,它能够手动锚定。似乎应该是可能的——大多数人会同意编辑字段旁边的静态文本字段应该锚定在一起。猜猜我几乎在这里寻找一个小人工智能:)

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

Ultimate Toolbox MFC 库(CodeProject 上)包括一个布局管理器。我自己没有使用它,但它看起来像你想要的。

于 2008-09-27T22:24:13.390 回答
0

这也是 CodeProject 提供的免费解决方案
http://www.codeproject.com/KB/dialog/dlgresizearticle.aspx
它只是一组简单的宏,用于在对话框调整大小时定位控件。

编辑 - 遵循 OP 评论。我不知道像 QT/WX 对 MFC 的任何一般的 sizer 支持,它似乎也不存在于像 Winforms 这样的新框架中。
它在 QT/WX 中是因为它对于多平台来说是必要的,其中小部件可能具有不同的大小,这解释了 MS 缺乏它的原因。但它对于多语言端口也很重要,例如。其中取消的德语为 30 个字符。

于 2008-09-27T22:28:51.213 回答
0

您可以查看Professional GUI,我们使用他们的类库来调整对话框控件的大小。我认为这是他们免费版本的一部分。

于 2008-09-27T22:36:40.383 回答
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 回答