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)かつウインドウが中央に配置されるようになった。