■ 新・ゲーム開発講座




■ へっぽこプログラミング入門♪


■第12夜:ウィンドウを開く位置

さて、遅延が出来たところでコマンドを充実させる方向に話を進めたいところですが・・・実はその前に少しプログラムにお化粧を施しておきたいと思います。本当は最初のあたりでやっておくべきだったのですが、「後でいいや」 的に放っておいたことが2、3あるのです(間抜けですね ^^; ・・・やっぱり、へっぽこだぁ)。いまの状態で下手にコマンドを充実してしまうと、後から手を加える箇所もずんどこ増えてしまいますので、いまのうちになんとかしておきましょう。

・・・で、まずやっておくべきこと。やっぱり起動したらウィンドウは画面中央に開きたいですよね!・・・という訳で以下の関数を付け加えましょう。内容は、猫でも分かるプログラミングをかなり参考にしています(笑)。とゆーか、これ以外にどう書けとゆーのだろー的な内容ですけど…(^^;)



//===================================================
// Windowを画面中心に移動する
//===================================================

int Window_Center(HWND hWnd)
{

RECT desktop;
RECT window;

GetWindowRect(GetDesktopWindow(), (LPRECT)&desktop); //デスクトップのサイズを取得
GetWindowRect(hWnd, (LPRECT)&window); //自ウィンドウのサイズを取得

//ウィンドウ位置を移動
SetWindowPos(
hWnd,
HWND_TOP, //一番手前に表示
(desktop.right - (window.right-window.left)) / 2, //X 位置
(desktop.bottom - (window.bottom-window.top)) / 2, //Y 位置
(window.right-window.left),
(window.bottom-window.top),
SWP_SHOWWINDOW //特に変なオプションもなく普通に表示

);

return 0;


}



内容を順次説明します。実はデスクトップ自体もウィンドウハンドルを持っているので GetDesktopWindow()でこれを取得し、それを GetWindowRect() (=ウィンドウサイズを取得する関数)に渡してデスクトップのサイズを取得します。また自ウィンドウのサイズも同様に GetWindowRect() で取得して、それを元に表示すべき座標を計算しています。




・・・で、WinMain() でWindow表示をする直前にこの関数を呼んでおけば、めでたく画面中央に窓が開いてくれます。ソースはこちらです。