プログラマーの卵の日記

備忘録になってます!小難しそうなことから超簡単なことまでやってます!!

【C++】【DxLib】複数ウィンドウを作成したい

DxLibを用いている部分は元のウィンドウを縮小化させる処理とWindows.h関係を引っ張ってるだけです。

構成


ランチャー作ったときにやってた







    ランチャー作ったときにやってた


 ぶっちゃけ作ってたのでとりあえずコードを載せます。ただ一年以上前に書いたコードなのであんま覚えてない。
htmlで書いている関係でincludeの所であれがないけど許して…。


#pragma once
#include string

class FolderInGame
{
private:
	// プロセスが起動したかどうか
	BOOL result;		


public:
	// コンストラクタ
	FolderInGame() : result(FALSE) {}		

	// デストラクタ
	~FolderInGame() {}	


	// メイン/ exeの階層までのパスを保存した引数とexeの名前を保存した引数
	void Process(std::string createPath, std::string folderName);		


	/// ゲッター

	// 起動を確認
	bool GetbResult();		
};

 


#include "FolderInGame.hpp"

void FolderInGame::Process(std::string createPath, std::string folderName)
{
	result = TRUE;		// ゲームの起動を始めた合図


	PROCESS_INFORMATION pInfo = {};	// プロセス軌道のためのもの


	STARTUPINFO sInfo = {};			// 初期プロセス起動のためのもの


	ZeroMemory(&sInfo, sizeof(sInfo));		// 構造体全部初期化する
	sInfo.cb = sizeof(sInfo);
	ZeroMemory(&pInfo, sizeof(pInfo));


	GetStartupInfo(&sInfo);					// スタートアップ情報を得る


	// ランチャーが見えない状態で起動させる
	sInfo.dwFlags = STARTF_USESHOWWINDOW;
	sInfo.wShowWindow = SW_HIDE;


	// ディレクトリ位置を調べる用変数
	std::string gamePath = "";				// ゲームexeファイル
	std::string direPath = "";				// ゲームファイル


	gamePath.operator+= (createPath);
	gamePath.operator+= (folderName);
	gamePath.operator+= ("\\");
	direPath = gamePath;
	gamePath.operator+= (folderName);
	gamePath.operator+= (".exe");


	SetWindowMinimizeFlag(TRUE);	// ランチャーを最小化にする


	// ゲームを起動
	result = CreateProcess(
		NULL,
		(LPSTR)gamePath.c_str(),		// ゲームを指定
		NULL,
		NULL,
		FALSE,
		CREATE_NEW_PROCESS_GROUP,
		NULL,
		direPath.c_str(),				// カレントディレクトリを指定
		&sInfo,
		&pInfo
	);


	WaitForSingleObject(pInfo.hProcess, INFINITE);		// 終了するまで待機
	SetWindowMinimizeFlag(FALSE);						// 最小化を解除
	CloseHandle(pInfo.hProcess);						// 解放
	CloseHandle(pInfo.hThread);							// 解放


	result = FALSE;										// ランチャーへの合図
}

bool FolderInGame::GetbResult()
{
	return result;
}



ここではCreateProcessを用いています。
createPathは簡単に言えばC\\...\\Launcherってとこで、folderNameはGameOneだとしたらC\\...\\Launcher\\GameOne\\GameOne.exeみたいな感じ。