设置:
我在为Windows实施一些DPI更改时遇到问题。建议的rect(lParam
的WM_DPICHANGED
)在到达缩放屏幕后将返回较小窗口的值。
如果在第一台显示器上创建1280x720
窗口,然后将其移至第二台显示器,建议的大小将变为1922x1044
。宽度是有意义的,因为缩放比例应为1920x1080
。所以我猜想这是边界像素的因素。但是,它在建议的矩形上返回的高度,比正确缩放窗口时的高度要小。现在,如果我回到原始显示,它已经缩小到新的高度,新的建议大小变为1280x694
,我们将失去原始的Window大小。
我已经尝试将窗口位置手动设置为自行计算的比例,(width * scale, height * scale)
,但是它无法正常工作,因为它无法正确设置SetWindowPos中的边框和标题栏,因为我猜想它希望您包括这些计算的大小。
我还尝试将窗口大小减小为1280x690
,然后将其移至显示器2,然后返回至显示器1,然后大小恢复为原始大小。因此,它绝对与窗口的分辨率和目标显示有关。我曾尝试使用1280x720
窗口和DPI Scaling测试其他应用程序(例如Microsoft Office),并且它们调整窗口大小,使其显示2并返回显示1,返回时大小为正确的1280x720
,但没有遇到不断缩小。
我想念什么吗?我正在使用SetProcessDpiAwarenessContext(DPI_AWARENESS_CONTEXT_PER_MONITOR_AWARE_V2)
任何帮助将不胜感激。