-
Notifications
You must be signed in to change notification settings - Fork 95
ディスプレイのDPI取得を誤っている場合がある #555
Copy link
Copy link
Closed
Milestone
Description
手もとでテストしていると、うまく取得できないことがあるようです。
環境はWindows10でシングルディスプレイです。
設定から、拡大縮小とレイアウトで、100%から125%に切り替えたとき、
発生します。
(1) WM_DPICHANGED の LOWORD(wparam) は 120
(2) GetMonitorInfoW()->CreateDCW()->GetDeviceCaps(LOGPIXELSX)は 96 を返す
(3) GetDpiForMonitor()は 120 を返す
(2)は現在の実装で c974cd9 で変更しました。
(3)は変更前の実装です。
DPI変更に伴ってウィンドウのサイズと位置を変更したとき、
ウィンドウを表示するディスプレイのDPIが変更後のDPIが異なっていたら、
Windowsが再度WM_DPICHANGEDメッセージを発生してしまうかもしれません。
手もとでのテストはシングルディスプレイなので問題ありませんが、
解像度が異なっているディスプレイをまたぐ際、
場合によっては WM_DPICHANGED が大量に発生して
サイズがバタバタと切り替わる場合があるかもしれません。
(DPI取得がうまくいかなかった場合、どんな望まない動作が発生するかよくわかっていません)
追試いただけないでしょうか。
(3)のGetDpiForWindow() ですが、
APIのページ の説明、
既存のアプリケーションの更新
の説明、
(英語ページのほうが見やすいかもしれません Updating Existing Applications )
ともにモニタごとの解像度変更に対応している感じがします。🤔
Reactions are currently unavailable