Windows C ++对话框调整器类

我正在寻找一个非常好的对话框调整器类,当屏幕被resize时,会根据需要伸缩单个项目。 Stephan Keil有一个很好的(DlgResizeHelper),它基本上按一定比例调整一切,但是我正在寻找更聪明的东西。

例如:

  • 图标不应resize

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

  • button应该保持相同的大小

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

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

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

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

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

每个控件(左,右)最多可以设置2个锚点,以便在对话框移动时移动它们,或者在移动时调整它们的大小。 它很容易理解,如果很难得到完美的权利:)

我已经尝试了很多,最后解决了http://www.codeproject.com/KB/dialog/layoutmgr.aspx 。 它不会做你所建议的“智能”布局。 我从来没有在任何一个图书馆,任何平台上看到过,如果没有很多的魔法,那么在一半的时间里都会被忽略。

终极工具箱的MFC库( 这里 CodeProject)包括一个布局管理器 。 我自己并没有使用它,但它看起来像是你想要的。

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

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

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

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

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

源代码

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

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