Win32API コンソールスクリーンバッファのサイズを設定する SetConsoleScreenBufferSize

既定の状態ではコンソールに多数の行からなる文字列を出力すると、先に出力した文字列が消えてしまって、元に戻ってみたいときに見ることができなくなってしまう。また、コンソールに出力する行が非常に長いと意図しないところで改行が入り、見にくくなってしまう。そのようなときは、SetConsoleScreenBufferSize関数でコンソールスクリーンバッファのサイズを広げることで解決できる。


SetConsoleScreenBufferSizeのプロトタイプ

BOOL SetConsoleScreenBufferSize(
  HANDLE hConsoleOutput,  // コンソールスクリーンバッファのハンドル
  COORD dwSize            // 文字の行数と列数で表した新しいサイズ
);



使用例

#include <windows.h>
#include <stdio.h>

int main()
{
	COORD coord;
	coord.X = 1000;
	coord.Y = 1000;

	//コンソールスクリーンバッファが広がり、
	//ウィンドウにスクロールバーが現れる
	SetConsoleScreenBufferSize(
		GetStdHandle(STD_OUTPUT_HANDLE), coord);

	for (size_t i = 0; i < 1000; i++) {
		printf("%d\n", i);
	}

	//getcharでコンソール入力待ちにし、ウィンドウのスクロールバーを
	//使って出力済みの文字列を確認することができるようにする。
	getchar();

	return 0;
}


参考
http://msdn.microsoft.com/ja-jp/library/cc429751.aspx