WM_DPICHANGED缩小窗口大小

问题描述 投票:0回答:1

设置:

  • Windows 10 Pro v1903
  • 第一显示:1920x1080默认DPI缩放
  • 第二显示器:1920x1080,DPI缩放比例为50%。

我在为Windows实施一些DPI更改时遇到问题。建议的rect(lParamWM_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)

任何帮助将不胜感激。

windows winapi scaling dpi
1个回答
0
投票

但是由于它不考虑边框和标题栏正确

您可以尝试使用GetWindowRect获取窗口的边界矩形。然后缩放矩形:

GetWindowRect
© www.soinside.com 2019 - 2024. All rights reserved.