ウィンドウ

ウィンドウの作成

CreateWindow

HWND CreateWindow(
  LPCTSTR lpClassName,  // 登録されているクラス名
  LPCTSTR lpWindowName, // ウィンドウ名
  DWORD dwStyle,        // ウィンドウスタイル (Window Stylesで定義されている値の組み合わせ)
  int x,                // ウィンドウの横方向の位置
  int y,                // ウィンドウの縦方向の位置
  int nWidth,           // ウィンドウの幅
  int nHeight,          // ウィンドウの高さ
  HWND hWndParent,      // 親ウィンドウまたはオーナーウィンドウのハンドル
  HMENU hMenu,          // メニューハンドルまたは子ウィンドウ ID
  HINSTANCE hInstance,  // アプリケーションインスタンスのハンドル
  LPVOID lpParam        // ウィンドウ作成データ
  );
CreateWindow 関数 | MSDN CreateWindowW macro | Microsoft Learn

オーバーラップウィンドウのとき、xをCW_USEDEFAULTとすると既定の位置が使用され、yは無視される。

オーバーラップウィンドウのとき、nWidthをCW_USEDEFAULTとすると既定の幅と高さが使用され、nHeightは無視される。

  • 既定の幅 … 初期x座標から画面の右端までの距離
  • 既定の高さ … 初期y座標からアイコン領域の上端までの距離

ウィンドウ ハンドルの取得

GetWindow

HWND GetWindow(
  HWND hWnd,  // 元ウィンドウのハンドル
  UINT uCmd   // 関係
  );
GetWindow 関数 | MSDN

FindWindow

HWND FindWindow(
  LPCTSTR lpClassName,  // クラス名
  LPCTSTR lpWindowName  // ウィンドウ名
);
FindWindow 関数 | MSDN

GetTopWindow

HWND GetTopWindow(
  HWND hWnd   // 親ウィンドウのハンドル
);
GetTopWindow 関数 | MSDN

GetDesktopWindow

HWND GetDesktopWindow(VOID);
GetDesktopWindow 関数 | MSDN

ウィンドウの位置とサイズ

MoveWindow

BOOL MoveWindow(
  HWND hWnd,      // ウィンドウのハンドル
  int X,          // 横方向の位置
  int Y,          // 縦方向の位置
  int nWidth,     // 幅
  int nHeight,    // 高さ
  BOOL bRepaint   // 再描画オプション
);
MoveWindow 関数 | MSDN

SetWindowPlacement

BOOL SetWindowPlacement(
  HWND hWnd,                      // ウィンドウのハンドル
  CONST WINDOWPLACEMENT *lpwndpl  // 位置データ
);
SetWindowPlacement 関数 | MSDN

GetWindowPlacement

BOOL GetWindowPlacement(
  HWND hWnd,                // ウィンドウのハンドル
  WINDOWPLACEMENT *lpwndpl  // 位置データ
);
GetWindowPlacement 関数 | MSDN

SetWindowPos

BOOL WINAPI SetWindowPos(
  _In_     HWND hWnd,            // ウィンドウのハンドル
  _In_opt_ HWND hWndInsertAfter, // Zオーダーの基準となるウィンドウへのハンドル
  _In_     int  X,               //
  _In_     int  Y,               //
  _In_     int  cx,              //
  _In_     int  cy,              //
  _In_     UINT uFlags           //
);
SetWindowPos function (Windows) | MSDN SetWindowPos 関数 | MSDN

コンソール ウィンドウのハンドルの取得

GetConsoleWindow()で、コンソール ウィンドウのハンドルを取得できます。またはGetConsoleTitle()でウィンドウのタイトルを取得し、それをFindWindow()で探すことでも取得できます。SDK32:コンソール ウィンドウのハンドル取得

位置とサイズの変更

SetWindowPos()で、ウィンドウの位置とサイズを変更できます。set console position - C++ Forum

HWND hWnd = GetConsoleWindow();
SetWindowPos(hWnd, HWND_TOPMOST, 100, 100, 300, 300, NULL);

これを実行時に変更するには、システムメニュー (タイトルバー左端のアイコンから表示) でプロパティを選択し、[レイアウト]タブで指定します。

参考

参考書

Microsoft Learnから検索