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

在windows 7中将显示更改为125%时,控件在MFC中被剪切,mfc,windows-7,layout,dpi,Mfc,Windows 7,Layout,Dpi,我有一个MFC应用程序。当在Windows7上运行它时,我意识到当将显示百分比更改为meduium-125%时,我有一个文本控件被切断(句子末尾不会出现) 我怎样才能解决这个问题 我可以放大对话框上控件的大小,但我更愿意通过代码来实现。 我的应用程序是本地化的,我不想更改每种语言上的所有对话框。一般来说,问题是绝对坐标用于某些大小调整,而不是相对坐标。该框架最初将在大型DPI中正确布局,然后由您通过调整大小来保持事情的直截了当 您可以使用如下布局框架:,也可以自己滚动 以下是我使用的常见模式:

我有一个MFC应用程序。当在Windows7上运行它时,我意识到当将显示百分比更改为meduium-125%时,我有一个文本控件被切断(句子末尾不会出现)

我怎样才能解决这个问题

我可以放大对话框上控件的大小,但我更愿意通过代码来实现。
我的应用程序是本地化的,我不想更改每种语言上的所有对话框。

一般来说,问题是绝对坐标用于某些大小调整,而不是相对坐标。该框架最初将在大型DPI中正确布局,然后由您通过调整大小来保持事情的直截了当

您可以使用如下布局框架:,也可以自己滚动

以下是我使用的常见模式:

  • 定义一个结构,用于捕获控件的ID、大小、位置和布局行为(锚定顶部|左侧|右侧|底部)
  • 在文档构造函数中,使用所需的布局行为初始化结构数组
  • 在OnInitDialog中,捕获初始控件位置,例如,对于设置为“锚定左上角”的控件,您需要获取从父控件的左上角的初始距离
  • OnSize
    中,根据每个控件的布局行为重新定位并调整其大小

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