実現したいこと
ChangeDisplaySettingsを用いて、アプリの使用に合わせた画面解像度に設定後、アプリ終了直前に元に解像度に戻したいです。
前提
最初は横1920✕縦1080のディスプレイに対し、Windows設定のシステム>ディスプレイから横1680✕縦1050の解像度に設定します。
次に、本アプリを起動し、ChangeDisplaySettings関数でディスプレイ設定を横1920✕縦1080にします。
発生している問題
アプリ終了直前に、同じくChangeDisplaySettings関数で横1680✕縦1050に戻そうとしても戻りません。
どうすれば戻りますか。
該当のソースコード
C++
1 2POINT screensizeOld; 3 4void ChangeDisplayMode(HWND hWnd,LONG w,LONG h) 5{ 6 //ディスプレイデバイス情報取得 7 DISPLAY_DEVICE DispDev; 8 DEVMODE defaultMode; 9 10 ZeroMemory(&DispDev, sizeof(DispDev)); 11 DispDev.cb = sizeof(DispDev); 12 13 14ZeroMemory(&defaultMode, sizeof(DEVMODE)); 15defaultMode.dmSize = sizeof(DEVMODE); 16EnumDisplayDevices(NULL, NULL, &DispDev, 0); 17 18 19 20 if (EnumDisplaySettings(DispDev.DeviceName, ENUM_REGISTRY_SETTINGS, &defaultMode)) { 21 22 //現在のディスプレイ解像度を格納。 23 screensizeOld.x = defaultMode.dmPelsWidth; 24 screensizeOld.y = defaultMode.dmPelsHeight; 25 26 //引数で設定した解像度を格納 27 defaultMode.dmPelsWidth = w; 28 defaultMode.dmPelsHeight = h; 29 ChangeDisplaySettings( &defaultMode,0);//解像度を変更 30 31 } 32 else 33 { 34 screensizeOld.x = 0; 35 screensizeOld.y = 0; 36 } 37
試したこと
上記29行目でブレークポイントを貼り、アプリ終了時にここを通過していることは確認済みです。
また、このとき、w,hには1680,1050が格納されています。
補足情報(FW/ツールのバージョンなど)
Microsoft Visual Studio Community 2022 (64 ビット) - Current
Version 17.4.4
よろしくお願いいたします。

回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2023/09/02 10:40