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

发布于 2024-08-09 09:37:08 字数 180 浏览 9 评论 0 原文

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

我该如何解决这个问题?

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

I have an MFC application. When running it on Windows 7 I realized that when changing the display percentage to meduium - 125%, I have a TextControl which is cut off (end of sentence doesn't appear.)

How can I fix this?

I could enlarge the size of the control on the dialog, but I'd rather do that via the code.
My application is localized and I woudn't want to change all the dialogs on every language.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

流年里的时光 2024-08-16 09:37:08

一般来说,问题在于绝对坐标用于某些尺寸调整,而不是相对坐标。该框架最初会以大 DPI 正确布局,然后由您通过调整大小来保持事物的直线性。

您可以使用如下布局框架:Ultimate Toolbox 布局管理器,或者你可以自己动手。

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

  1. 定义一个结构体,用于捕获控件的 ID、大小、位置和布局行为(锚点 top|left|right|bottom)
  2. 在文档构造函数中,使用所需的布局行为初始化一个结构体数组
  3. 在 < code>OnInitDialog,捕获初始控件位置,例如,对于设置为锚定左上角的控件,您需要获取距父级顶部和左侧的初始距离。
  4. OnSize 中,根据每个控件的布局行为重新定位并调整其大小。

In general, the issue is that absolute coordinates are being used for some sizing rather than relative. The framework will initially lay things out correctly in large DPI, it's then up to you to keep things straight through resizes.

You can use a layout framework like this one: Ultimate Toolbox Layout Manager, or you can roll your own.

Here's a common pattern I use:

  1. Define a struct that captures ID, size, location, and layout behavior (anchor top|left|right|bottom) of a control
  2. In the document constructor initialize an array of structs with your desired layout behavior
  3. In OnInitDialog, capture the initial control positions, e.g. for controls set to anchor top left you need to grab the initial distance from the top and left of the parent.
  4. In OnSize, reposition and resize each control according to its layout behavior.
沫离伤花 2024-08-16 09:37:08

我不确定它是否对您的情况有帮助,但 RessizedLib 有效对我来说很好。您还可以跳过创建库并仅使用项目中的文件。
有一篇关于 CRessizedDialog 的单独文章,其中通过几个简单的步骤解释了如何为现有对话框实现此功能。

I'm not exactly sure if it helps in your case but the ResizableLib works pretty well for me. You can also skip creating a library and just use the files in your project.
There is a separate article for CResizableDialog which explains in a few easy steps how to implement this for existing dialogs.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文