创建后更改窗口的 DPI 感知



我正在为游戏制造商开发DLL,并且遇到了一些问题。我似乎无法在已经创建的窗口上更改DPI设置。这是真的还是有解决方法?我一直在使用setProcessDpiawareness和setThreadDpiawarenessContext。我正在使用C#,但我不介意如果需要的话切换到C 。

预先感谢。

在Windows 10之前,DPI是宽且恒定的。从Windows 10周年更新开始,您可以动态更改线程DPI,这被称为混合模式DPI缩放,但它仍然不允许您动态更改Windows DPI:

  • 创建窗口时,其DPI意识将定义为当时的DPI意识。
  • 当调用窗口的窗口过程时,将自动切换到创建窗口时使用的DPI意识上下文。

我唯一能想到的解决方法是更改线程DPI并用窗口的新实例替换旧窗口。

最新更新