我正在为游戏制作者制作一个dll而且我遇到了一些问题。 我似乎无法在已创建的窗口中更改dpi设置。 这是真的还是有一些解决方法? 我一直在使用SetProcessDpiAwareness和SetThreadDpiAwarenessContext。 我正在使用c#,但我不介意在需要时切换到c ++。
提前致谢。
答案 0 :(得分:0)
在Windows 10之前,DPI是流程范围广且不变的。从Windows 10 Anniversary Update开始,您可以动态更改线程DPI,这称为mixed mode DPI scaling,但它仍然不允许您动态更改Windows DPI:
- 创建窗口时,其DPI感知定义为当时调用线程的DPI感知。
- 当调用窗口的窗口过程时,线程会自动切换到创建窗口时正在使用的DPI感知上下文。
我能想到的唯一解决方法是更改线程DPI并用窗口的新实例替换旧窗口。