2017-08-31 446 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,並與窗口的新實例替換舊的窗口。