2017-08-31 44 views
-3

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

在此先感谢。

回答

-1

在Windows 10之前,DPI是进程宽而且不变的。与Windows 10 Anniversary Update开始可以动态改变一个线程DPI,这被称为mixed mode DPI scaling但它仍然不会让你动态地更改Windows DPI:

  • 当创建一个窗口,它的DPI意识被定义​​为DPI在当时对调用线程的意识。
  • 当调用窗口的窗口过程时,该线程会自动切换到创建窗口时正在使用的DPI认知上下文。

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