Windows C++对话框调整大小类

7
我正在寻找一个非常好的对话框调整大小类,它将根据需要拉伸和收缩各个项目,以适应屏幕的调整大小。 Stephan Keil 有一个很好的(DlgResizeHelper),它基本上通过设置比例来调整所有内容,但我正在寻找更智能的东西。
例如:
- 图标不应该调整大小 - 单行文本框不应该在垂直方向上被拉伸 - 按钮可能应该保持相同的大小
基本上我正在寻找一些东西来查看所有控件,找出静态文本字段与其下/旁边的控件相关,并将两者锚定在一起,并以“智能”的方式调整大型控件,使其看起来很好。
是否有这样的框架可用?我一直在开发一个,但准备好的东西可能会更好。
后续:我正在查看建议的解决方案。其中许多需要您进入并为对话框上的每个控件设置锚点。我正在寻找一些聪明的东西,它将确定锚点应该是什么,并具有手动锚定的能力,如果猜测错误,则可以手动锚定。似乎应该是可能的 - 大多数人都会同意静态文本字段旁边的编辑字段应该在一起锚定。我几乎在寻找一些人工智能:)
7个回答

2
我使用可调整大小的库 ResizableLib(还包括属性表和页面),我IRC。您可以设置锚点,确定对话框和控件如何随着对话框移动而调整大小或移动。
每个控件最多可以设置2个锚点(左,右),因此您可以在对话框移动时移动它们,或者在对话框移动时调整它们的大小。这很容易理解,但很难完美实现 :)

2

你可以使用wxWidgets。它完全替代了MFC,是多平台的,并提供了基于布局的对话框机制。


2
我尝试过很多,最终选择了http://www.codeproject.com/KB/dialog/layoutmgr.aspx。不过它没有你所建议的“智能”布局功能。我从未在任何平台的库中看到过这种功能 - 我不知道它如何工作,而且通常需要覆盖大量底层魔术操作。

0

0

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

编辑-根据OP的评论。我不知道是否有像QT/WX那样的MFC通用大小器支持,新的框架如Winforms中似乎也没有。
在QT/WX中存在这个功能是因为在多平台上,小部件可能具有不同的大小,这解释了MS缺少它的原因。但对于多语言端口也是至关重要的,例如德语中“取消”一词长度为30个字符。


0

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


0
我们使用CodeGuru的CResize类来自动调整所有控件的大小。您可以告诉它如何调整每个控件的大小,它会为您完成工作。
调整大小的范例是指定对话框调整大小时每个控件移动的距离。
SetResize(IDC_EDIT1, 0,   0,   0.5, 1);
SetResize(IDC_EDIT2, 0.5, 0,   1,   1);

当你拥有大量对话框控件时,非常方便。

源代码


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接