我有一个 MFC 应用程序。在 Windows 7 上运行它时,我意识到将显示百分比更改为中等 - 125% 时,我有一个被截断的 TextControl(不会出现句末。)
我怎样才能解决这个问题?
我可以放大对话框上控件的大小,但我宁愿通过代码来做到这一点。我的应用程序已本地化,我不想更改每种语言的所有对话框。
一般来说,问题在于绝对坐标被用于某些尺寸而不是相对坐标。该框架最初会在大 DPI 中正确布局,然后由您决定通过调整大小来保持内容。
您可以使用像这样的布局框架:Ultimate Toolbox Layout Manager,或者您可以自己滚动。
这是我使用的一个常见模式:
OnInitDialog
中,捕获初始控件位置,例如,对于设置为锚定左上角的控件,您需要从父对象的顶部和左侧获取初始距离。OnSize
中,根据其布局行为重新定位每个控件并调整其大小。我不确定它是否对您有帮助,但ResizableLib 对我来说效果很好。您也可以跳过创建库而只使用项目中的文件。CResizableDialog
有一篇单独的文章,它通过几个简单的步骤解释了如何为现有对话框实现这一点。