ゲームプログラムのメモ書き

WindowsAPI

ウインドウを中央に配置する

SystemParametersInfo関数を使う。

RECT rect = {0, 0, 640, 480};
SystemParametersInfo(SPI_GETWORKAREA, NULL, &rect, NULL);
int WndX = rect.left + (rect.right - WndW)/2;
int WndY = rect.top + (rect.bottom - WndH)/2;

AdjustWindowRect関数と組み合わせると

//定数宣言
#define WND_S (WS_OVERLAPPED|WS_CAPTION|WS_SYSMENU|WS_MINIMIZEBOX)

RECT rect = {0, 0, 640, 480};
AdjustWindowRect(&rect, WND_S, FALSE);
int WndW = rect.right - rect.left;
int WndH = rect.bottom - rect.top;
SystemParametersInfo(SPI_GETWORKAREA, NULL, &rect, NULL);
int WndX = rect.left + (rect.right - WndW)/2;
int WndY = rect.top + (rect.bottom - WndH)/2;

//ウインドウの作成
hWnd = CreateWindow(
    "AppName",      //アプリケーション名
    "sample",           //ウインドウタイトル
    WND_S,          //ウインドウ設定
    WndX, WndY,     //表示位置X,Y
    WndW, WndY,     //幅、高さ
    NULL,
    NULL,
    hInstance,
    NULL);

これで描画領域(X:640,Y:480)かつウインドウが中央に配置されるようになった。