0からのゲームプログラミング > CConsole クラス

Back Next
更新日 2004.04.07
CConsole クラス


Console.h

//====================================================================
//			CConsole クラス
//--------------------------------------------------------------------
//	処理内容 : コンソールAPIの寄せ集め
//	ファイル名	 : Console.cpp
//	作成者	 : Copyright(C) 2004 武千代
//====================================================================


#ifndef	__CONSOLE_H__
#define	__CONSOLE_H__


//====================================================================
//			ヘッダファイルのインクルード
//====================================================================
#include	<windows.h>


//====================================================================
//			列挙型
//====================================================================
enum {
	L_BLACK,	// 低輝度・黒色
	L_BLUE,		// 低輝度・青色
	L_GREEN,	// 低輝度・緑色
	L_CYAN,		// 低輝度・水色
	L_RED,		// 低輝度・赤色
	L_PURPLE,	// 低輝度・紫色
	L_YELLOW,	// 低輝度・黄色
	L_WHITE,	// 低輝度・白色

	H_BLACK,	// 高輝度・黒色
	H_BLUE,		// 高輝度・青色
	H_GREEN,	// 高輝度・緑色
	H_CYAN,		// 高輝度・水色
	H_RED,		// 高輝度・赤色
	H_PURPLE,	// 高輝度・紫色
	H_YELLOW,	// 高輝度・黄色
	H_WHITE,	// 高輝度・白色
};


//====================================================================
//			コンソール入出力クラス
//====================================================================
class CConsole{
	HANDLE		m_hConsoleStdOut;	// 出力コンソールのハンドル

public:
	// コンストラクタ
	CConsole()
	{
		// 出力コンソールのハンドルを取得
		m_hConsoleStdOut = ::GetStdHandle(STD_OUTPUT_HANDLE);
	}


	// デストラクタ
	~CConsole()
	{
		// ハンドルを取得していれば、ハンドルを閉じる
		if(m_hConsoleStdOut != INVALID_HANDLE_VALUE)
			::CloseHandle(m_hConsoleStdOut);
	}


	// カーソルのサイズと可視性を設定する
	// 第1引数 : カーソルのサイズ(1 〜 100 %)
	// 第2引数 : 可視性(TRUE or FALSE)
	// 戻り値  : なし
	void SetCursorInfo(DWORD dwSize = 25, BOOL bVisible = TRUE)
	{
		CONSOLE_CURSOR_INFO		info;

		info.dwSize = dwSize;
		info.bVisible = bVisible;
		::SetConsoleCursorInfo(m_hConsoleStdOut, &info);
	}


	// カーソルの位置をセットする
	// 第1引数 : x座標
	// 第2引数 : y座標
	// 戻り値  : なし
	void SetCursorPosition(short shXPos, short shYPos)
	{
		COORD	coord;
		coord.X = shXPos;
		coord.Y = shYPos;
		::SetConsoleCursorPosition(m_hConsoleStdOut, coord);
	}


	// 前景色・背景色を設定する
	// 第1引数 : 前景色
	// 第2引数 : 背景色
	// 戻り値  : なし
	void SetColor(WORD wFore = L_WHITE, WORD wBack = L_BLACK)
	{
		// 前景色・背景色属性を設定
		::SetConsoleTextAttribute(m_hConsoleStdOut, wFore + (wBack << 4));
	}


	// 指定色で画面を消去する
	// 第1引数 : 前景色
	// 第2引数 : 背景色
	// 戻り値  : なし
	void Clear(WORD wFore = L_WHITE, WORD wBack = L_BLACK)
	{
		CONSOLE_SCREEN_BUFFER_INFO	csbi;
		DWORD	dwNumberOfCharsWritten;		// 書き込まれたセル数
		COORD	coord = {0, 0};

		// コンソールスクリーンバッファに関する情報を取得
		if(::GetConsoleScreenBufferInfo(m_hConsoleStdOut, &csbi))
		{
			// バッファ内の指定した座標から指定した数の文字セル分だけ、前景色と背景色を設定
			::FillConsoleOutputAttribute(m_hConsoleStdOut, wFore + (wBack << 4),
					csbi.dwSize.X * csbi.dwSize.Y, coord, &dwNumberOfCharsWritten);

			// バッファ内の指定した座標から、指定した文字を指定した数だけ書き込む
			::FillConsoleOutputCharacter(m_hConsoleStdOut, ' ',
					csbi.dwSize.X * csbi.dwSize.Y, coord, &dwNumberOfCharsWritten);
		}
	}
};


#endif


//====================================================================

【スポンサード リンク】


Back Next

0からのゲームプログラミング > CConsole クラス