使 Delphi XE 应用程序 DPI 不感知

问题描述 投票:0回答:1

我刚刚在 Delphi 中创建了一个新应用程序,即使其他应用程序以相同的方式编写,这个新应用程序也不会由 Windows 自动缩放。所有应用程序都具有完全相同的设置(例如,scaled = false)。 Windows 通常会正确缩放它们(否则,如果缩放设置为 150% 或更高,它们会太小)。

我发现使用 .exe 文件的属性菜单,选项卡“兼容性”、“更改高 DPI 设置”并在底部设置“按系统缩放”可以解决问题,并且应用程序可以正确缩放。

但是我如何默认激活此选项(注册表?)或者如何以编程方式执行此操作?

delphi delphi-xe dpi highdpi
1个回答
0
投票

您可以为您的应用程序提供指定

<dpiAwareness>unaware</dpiAwareness>
(Windows 10 v1607 及更高版本)或
<dpiAware>false</dpiAware>
(早期版本)的应用程序清单。

或者,在运行时创建任何 GUI 窗口之前,您可以调用

SetProcessDpiAwarenessContext(DPI_AWARENESS_CONTEXT_UNAWARE)
(Windows 10 v1607 及更高版本)或
SetProcessDpiAwareness(PROCESS_DPI_UNAWARE)
(早期版本)。

有关更多详细信息,请参阅 MSDN 上的设置进程的默认 DPI 感知

© www.soinside.com 2019 - 2024. All rights reserved.