【问题标题】:change a window's dpi awareness after creation创建后更改窗口的 dpi 感知
【发布时间】:2018-02-09 13:57:54
【问题描述】:

我正在为游戏制作者开发 dll,但遇到了一些问题。 我似乎无法更改已创建窗口上的 dpi 设置。 这是真的还是有一些解决方法? 我一直在使用 SetProcessDpiAwareness 和 SetThreadDpiAwarenessContext。 我使用的是 c#,但如果需要,我不介意切换到 c++。

提前致谢。

【问题讨论】:

    标签: c# c++ windows dll dpi


    【解决方案1】:

    在 Windows 10 之前,DPI 是进程范围和恒定的。从Windows 10 Anniversary Update 开始,您可以动态更改线程 DPI,这被称为 mixed mode DPI scaling,但它仍然不允许您动态更改 Windows DPI:

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

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

    【讨论】:

      猜你喜欢
      • 2011-05-03
      • 2014-03-18
      • 2014-12-26
      • 2016-12-26
      • 2011-12-25
      • 1970-01-01
      • 2022-11-28
      • 1970-01-01
      相关资源
      最近更新 更多