Windows的C++对话框缩放工具类

问题描述:

我在寻找一个非常好的对话缩放工具类,将拉长,并根据需要为屏幕大小缩小单个项目。斯蒂芬凯尔有一个很好的(DlgResizeHelper),它基本上以一定的比例调整一切,但我在寻找更聪明的东西。Windows的C++对话框缩放工具类

例如:

  • 图标不应该调整

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

  • 按钮也许应该保持相同尺寸

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

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

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

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

终极工具箱MFC库(CodeProject上的here)包括一个layout manager。我没有用过它,但它看起来像是你想要的。

这是一个免费的解决方案也从CodeProject
http://www.codeproject.com/KB/dialog/dlgresizearticle.aspx
这只是一个简单的一套宏的对话框调整大小位置控制。

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

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

我用ResizableLib(也做PropertySheets和Pages)关闭CodeProject上,IIRC。您可以设置确定对话框和控件在对话框移动时如何调整大小或移动的定位点。

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

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

调整大小范例是指定在调整对话框大小时控件的每一侧会移动多少。

SetResize(IDC_EDIT1, 0, 0, 0.5, 1); 
SetResize(IDC_EDIT2, 0.5, 0, 1, 1); 
当你有大量的对话框控件的

非常方便。

Source code

我已经尝试了很多,终于在http://www.codeproject.com/KB/dialog/layoutmgr.aspx解决。它不会做你建议的'智能'布局。我从来没有在任何图书馆和任何平台上看到过这种情况 - 我没有看到如果没有大量的魔法,无论如何都必须被覆盖一半的时间,这种方法才能奏效。