Win版 ウィンドウサイズがユーザ設定値より小さい
ウィンドウサイズを変更する処理(MIDITrailApp::_SetWindowSize)において、 Windows Vista以降のOSの仕様変更に追随できていなかった。
従来のウィンドウサイズ変更処理
Windows Vista以降において、GetWindowRectは影を含むサイズを返すようになった。 またSetWindowPosで指定するウィンドウサイズは、影を含むサイズを期待されるようになった。
(4)でユーザ設定サイズをSetWindowPosに渡していたが、影を含むサイズとして扱われるため、 実際のウィンドウサイズはユーザ設定サイズより小さくなった。
描画領域にユーザ設定サイズを適用する場合は、(3)で算出した枠のサイズが影を含むため、 正しいサイズで表示されていた。
MIDITrailの初期バージョンは、Windows XPで開発していたため、OSの仕様変更に気づいていなかった。
以下の条件をすべて満たすと、ウィンドウサイズがユーザ設定値よりも小さくなる。
SetWindowPosに対して影を含むウィンドウサイズを指定する。 またDwmGetWindowAttributeを用いて影を含まないウィンドウサイズを取得し、ウィンドウ枠のサイズを正しく算出する。
Both MoveWindow and SetWindowPos result in incorrect window position/size https://stackoverflow.com/questions/65599491/both-movewindow-and-setwindowpos-result-in-incorrect-window-position-size
MIDITrailのウィンドウサイズがユーザ設定値より小さい。 ウィンドウサイズ設定ダイアログでウィンドウサイズを800 x 600にしていても、 実際のサイズは786 x 593となり、横が-14、縦が-7の偏差がある。