Windows 8.1からはPROCESS_PER_MONITOR_DPI_AWARE、Windows 10 v1703からはDPI_AWARENESS_CONTEXT_PER_MONITOR_AWARE_V2というアプリケーションがあります。私のウィンドウは、ウィンドウモードではWS_OVERLAPPEDWINDOWスタイルを持ち、フルスクリーン時にはモニタサイズのWS_POPUPに切り替えます。Windows 10、DPIスケーリングとフルスクリーン
同じモニタでDPIを変更すると、ウィンドウモードウィンドウでは、Windows 8.1とWindows 10 v1703の両方でWM_DPICHANGEDメッセージのサイズが正しく調整されます。ただし、フルスクリーンの場合、Windows 8.1ではフルサイズのウィンドウのサイズは変更されません(同じサイズが維持されます)が、Windows 10 v1703では変更されません。つまり、96 dpiでの2560x1440フルスクリーンウィンドウは、たとえば144 dpiになるとWindows 8.1で2560x1440のままですが、Windows 10 v1703では3840 x 2160にサイズが変更されます。
これは正常ですか?つまり、Windows 8.1で自動的に行われていたWM_GETDPISCALEDSIZEメッセージを受け取ったときに、全画面ウィンドウを同じサイズにする必要がありますか?
EDIT:ウインドウ化されている場合(ウインドウ化されている場合のみ、ウインドウズされている場合はWS_OPOPUPが機能しますが、サイズがモニタと同じでない場合のみ)ウインドウがフルスクリーンの場合、WM_GETDPISCALEDSIZEメッセージは送信されません。したがって、私はこの動作を無効にすることもできず、Windows 8.1はフルスクリーンのウィンドウでWindows 10 v1703とは異なる動作をします。
ウィンドウ全体を(WS_POPUP以外の)全画面にするためにどのようなスタイルを設定しますか? –
フルスクリーンに行くときに 'WS_POPUP | WS_VISIBLE'を呼び出し、ウィンドウに戻るには 'WS_OVERLAPPEDWINDOW | WS_CLIPSIBLINGS | WS_CLIPCHILDREN | WS_VISIBLE'。 – Rajveer
質問に矛盾があるようです...あなたはWindows 8.1で同じサイズを維持すると言いますが、後でWindows 8.1で自動的に行われていました。 – Phil1970