Windows C ++对话框缩放器类

时间:2008-09-27 22:03:23

标签: c++ windows mfc dialog resize

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

例如:

  • 图标不应调整大小

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

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

基本上我正在寻找能够查看所有控件的东西,弄清楚静态文本字段与它下面/下面的控件相关并将两者锚在一起,并以“智能”方式调整大型控件的大小所以它看起来不错。

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

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

7 个答案:

答案 0 :(得分:2)

我在代码项目IIRC上使用ResizableLib(也是PropertySheets和Pages)。您可以设置锚点,以确定对话框移动时对话框和控件如何调整大小或移动。

每个控件最多可以设置2个锚点(左,右),这样您就可以在对话框移动时移动它们,或者在移动时调整它们的大小。它很容易理解,如果难以完全正确的话:):

答案 1 :(得分:2)

我尝试了很多,最后选择了http://www.codeproject.com/KB/dialog/layoutmgr.aspx。它不会做你建议的“智能”布局。我从来没有在任何平台上看到过这种情况 - 我没有看到它如何在没有引擎盖的魔法的情况下工作,无论如何都必须被覆盖一半。

答案 2 :(得分:1)

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

答案 3 :(得分:0)

Ultimate Toolbox MFC库(CodeProject上的here)包含layout manager。我自己没有使用它,但它看起来像你想要的那样。

答案 4 :(得分:0)

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

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

答案 5 :(得分:0)

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

答案 6 :(得分:0)

我们使用CodeGuru的CResize类自动调整所有控件的大小。您告诉您希望如何调整每个控件的大小,并为您完成工作。

调整大小范例是指定在调整对话框大小时控件的每一边移动的程度。

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

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

Source code