创建后更改窗口的dpi意识

时间:2017-08-31 14:49:37

标签: c# c++ windows dll dpi

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

提前致谢。

1 个答案:

答案 0 :(得分:0)

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

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

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