AdjustWindowRect

AdjustWindowRectは、クライアント領域が指定のサイズになるようなウィンドウサイズを計算する。

AdjustWindowRect function (winuser.h) - Win32 apps | Microsoft Docs

resource.hで、

メインメニュー本体とVGA(640x480)にするアイテム。

AdjustWindowRect.rcで、

"SizeVGA(640x480)(&V)"を選択すると、VGAになる。

AdjustWindowRect.cppは、

WM_SIZEでウィンドウサイズが変化するたびに、ウィンドウサイズとクライアントサイズを計算し保持しておく。

WM_PAINTでウィンドウサイズとクライアントサイズを描画。

"SizeVGA(640x480)"が選択されたら、(0, 0, 640, 480)でAdjustWindowRectに渡す。
そうすると、そのクライアントサイズに対応するウィンドウサイズに更新される。
現在位置を取得し、そこを起点にウィンドウサイズになるウィンドウにMoveWindowでリサイズする。

最初はこう。
最初はこう。

最初はこう。

SizeVGAを選択
SizeVGAを選択

SizeVGAを選択。

クライアントサイズが640x480になってる
クライアントサイズが640x480になってる

クライアントサイズが640x480になってる。
それに合わせたウィンドウサイズになっているということ。

Sample/winapi/AdjustWindowRect/AdjustWindowRect/src/AdjustWindowRect at master · bg1bgst333/Sample · GitHub