在Windows 7中将显示更改为125%时,控件在MFC中被剪切

时间:2009-10-28 17:41:09

标签: mfc windows-7 layout dpi

我有一个MFC应用程序。在Windows 7上运行时,我意识到当将显示百分比更改为meduium - 125%时,我有一个TextControl被截断(句子的结尾不会出现。)

我该如何解决这个问题?

我可以在对话框上放大控件的大小,但我宁愿通过代码来做。 我的应用程序已本地化,我不想更改所有语言的所有对话框。

2 个答案:

答案 0 :(得分:1)

一般来说,问题是绝对坐标用于某些尺寸而不是相对。该框架最初将在大型DPI中正确布局,然后由您决定是否通过调整大小来保持正确。

你可以使用像这样的布局框架:Ultimate Toolbox Layout Manager,或者你可以自己动手。

这是我使用的常见模式:

  1. 定义一个结构,用于捕获控件的ID,大小,位置和布局行为(锚顶部|左侧|右侧|底部)
  2. 在文档构造函数中初始化具有所需布局行为的结构数组
  3. OnInitDialog中,捕获初始控制位置,例如对于设置为锚定左上角的控件,您需要从父级的顶部和左侧抓取初始距离。
  4. OnSize中,根据布局行为重新定位和调整每个控件的大小。

答案 1 :(得分:0)

我不确定它是否对你的情况有帮助,但ResizableLib对我来说效果很好。您也可以跳过创建库并只使用项目中的文件 CResizableDialog有一篇单独的文章,它通过几个简单的步骤解释了如何为现有对话框实现这一点。