ウィンドウのサイズを取得するにMoveWindow関数を使えばできるとあるので使ってみました。
元のウィンドウのサイズは200×230+枠などのサイズです。
テストでハイスコアダイアログを閉じた後に以下のようにして画面サイズを変更するようにしてみました。
CRect wrect;
this->GetWindowRect(&wrect);
this->MoveWindow( wrect.left, wrect.top, 400, 460, TRUE );
[album]709[/album]
そこで、以下のようにwrectの部分を0,0固定にしてみました。 すると、ウィンドウ内の画面が移動することはなくなりました。
[album]710[/album]
サイトの説明や持っているライブラリ本の説明を見ても第1・第2引数は新しい左上の座標であり、サイトの使用例を見ても相対位置であるようには思いませんでした。
ですが、実際に使ってみて相対位置なのでは?と思いました。
そこで、次は以下のように画面サイズを大きくするのではなく小さくするように変更してみました。 すると、ウィンドウサイズは相変わらず変わらなかったものの、画面の途中に枠が出るようになりました。
[album]711[/album]
本にはMoveWindowについて「CWndの位置とサイズを変更します。」とあり、CWindについてみてみると、「このクラスはWindowsのウィンドウではなくWindows内部のデータ構造とメッセージマップを保持したオブジェクトです。」とありました。
MoveWindowというのは画面内の描画可能範囲の位置やサイズを変更させるためのものなんですね。
では、どうやったらVisual Studio 2008でMFCのSDIでプログラム開始時以外にウィンドウサイズを変更させることができるでしょうか?