デスクトップの画面中央にウインドウを移動するには次の手順で行います。(戻る)
- デスクトップ画面全体のサイズを取得(SystemParametersInfo)
- 移動するウインドウのサイズを取得(GetWindowRect)
- 移動するウインドウの座標位置を計算(画面中央)
- 計算した座標にウインドウを移動(SetWindowPos)
プロトタイプ宣言
BOOL SystemParametersInfo( UINT uiAction, // 取得または設定するべきシステムパラメータ UINT uiParam, // 実施するべき操作によって異なる PVOID pvParam, // 実施するべき操作によって異なる UINT fWinIni // ユーザープロファイルの更新オプション ); BOOL GetWindowRect( HWND hWnd, // ウインドウのハンドル LPRECT lpRect // ウインドウの座標値 ); BOOL SetWindowPos( HWND hWnd, // ウインドウのハンドル HWND hWndInsertAfter, // 配置順序のハンドル int X, // 横方向の位置 int Y, // 縦方向の位置 int cx, // 幅 int cy, // 高さ UINT uFlags // ウインドウ位置のオプション );
構造体
typedef struct _RECT { LONG left; // 左上隅のX座標 LONG top; // 左上隅のY座標 LONG right; // 右下隅のX座標 LONG bottom; // 右下隅のY座標 } RECT, *LPRECT;
サンプル
// ワークエリア領域の取得 #define GetMonitorRect(rc) SystemParametersInfo(SPI_GETWORKAREA,0,rc,0) // デスクトップの画面中央に移動 BOOL DesktopCenterWindow( HWND hWnd ) { RECT rc1; // デスクトップ領域 RECT rc2; // ウインドウ領域 INT cx, cy; // ウインドウ位置 INT sx, sy; // ウインドウサイズ // サイズの取得 GetMonitorRect( &rc1 ); // デスクトップのサイズ GetWindowRect( hWnd, &rc2 ); // ウインドウのサイズ // いろいろと計算 sx = (rc2.right - rc2.left); // ウインドウの横幅 sy = (rc2.bottom - rc2.top); // ウインドウの高さ cx = (((rc1.right - rc1.left) - sx) / 2 + rc1.left); // 横方向の中央座標軸 cy = (((rc1.bottom - rc1.top) - sy) / 2 + rc1.top); // 縦方向の中央座標軸 // 画面中央に移動 return SetWindowPos( hWnd, NULL, cx, cy, 0, 0, (SWP_NOSIZE|SWP_NOZORDER|SWP_NOOWNERZORDER) ); }
- hWnd が対象のウインドウ・ハンドルです。
関連記事
- 画面中央にウインドウを移動
- 画面隅にウインドウを移動
- 画面端にウインドウを移動
- 画面9箇所にウインドウを移動
- ウインドウの移動範囲を制御
- ウインドウの移動位置を固定
※コメント投稿者のブログIDはブログ作成者のみに通知されます