RECT, который я получаю от WM_DPICHANGED, не масштабируется, когда я перемещаю окно между двумя мониторами с разным масштабированием, я получаю одинаковые размеры в пикселях, на какой бы монитор я ни перемещал (в результате окно становится слишком большим для монитора илислишком мал для его содержания).От использования Spy ++ похоже, что это относится и к другим приложениям.Документация предполагает, что по умолчанию он должен линейно масштабироваться с DPI.
Мое приложение использует Qt Quick, который по умолчанию устанавливает PROCESS_PER_MONITOR_DPI_AWARE
.Я также пробовал SetProcessDpiAwareness(PROCESS_SYSTEM_DPI_AWARE)
в своем собственном коде, который работает, как я хочу, с точки зрения размера окна, но содержимое на вторичном мониторе размыто (как и следовало ожидать), и SetProcessDpiAwarenessContext(DPI_AWARENESS_CONTEXT_PER_MONITOR_AWARE_V2)
, который работает как Qtпо умолчанию, но масштабирует декорации окна тоже правильно.Во всех 3 случаях содержимое окна масштабируется правильно.
Мне интересно, есть ли проблема с самой Windows, или если обновление изменило это поведение, так как в настоящее время ни одно приложение не изменяет размер для меня правильно, и яЯ уверен, что некоторые приложения, например, Explorer и Edge по крайней мере.В настоящее время я использую Windows 10 17134.