最終更新日 2024-09-25

void onメインウィンドウ生成後(引数型 arg, 返値型 ret)

public static void onメインウィンドウ生成後(引数型 arg, 返値型 ret)
{
    nint hWind = (nint)(int)arg["ウィンドウハンドル"];
}

arg

ret

なし

タイミング

一般的用途

例① 初期化に適している

static int 変数1 = 0;
static string 変数2 = "";
public static void onメインウィンドウ生成後(引数型 arg, 返値型 ret)
{
    変数1 = 100;
    変数2 = "メインウィンドウ生成後";
}

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

public static void onメインウィンドウ生成後(引数型 arg, 返値型 ret)
{
    デバッグ出力("メインウィンドウ生成後");
    IntPtr hWnd = (IntPtr)(int)arg["ウィンドウハンドル"];
}
  

例③ ウィンドウハンドルを控えておき、オープニングムービー時に1600x900にリサイズして画面中央に表示

[DllImport("user32.dll", SetLastError = true)]
public static extern bool MoveWindow(IntPtr hWnd, int x, int y, int nWidth, int nHeight, bool bRepaint);

static nint hWnd = 0;

public static void onメインウィンドウ生成後(引数型 arg, 返値型 ret)
{
    デバッグ出力("メインウィンドウ生成後");

    // 後でウィンドウの位置やサイズを変更するために控えておく
    hWnd = (nint)(int)arg["ウィンドウハンドル"];
}

public static void onムービー要求時(引数型 arg, 返値型 ret)
{
  // オープニングムービーが再生されるタイミングで、ウィンドウサイズを変更する。
  string ファイル名 = (string)arg["ファイル名"];
  if (ファイル名.ToLower().Contains("opening.avi")) {
      int width = 1600;
      int height = 900;

      // 画面の縦横サイズとウィンドウの縦横サイズから、移動先の位置を求める
      int newX = (Screen.PrimaryScreen.WorkingArea.Width - width) / 2;
      int newY = (Screen.PrimaryScreen.WorkingArea.Height - height) / 2;

      MoveWindow(hWnd, newX, newY, width, height, true);
  }
}