// // Windowsのコマンドプロンプト用コンソール制御 // 参照元URL:http://www.masukawa.co.jp/sdk/10.html // // 文字列出力 // printf(フォーマット, データ, データ, .....); // // 1文字入力 // k = getch(); // // 1行入力 // gets(string); // // リアルタイム入力 // if (kbhit()) { // k = getch(); // } // // 待ち // Sleep(待ち時間ミリ秒); #include #include #include //***************************************************************************** // 色コード //***************************************************************************** // 黒(CC_BLACK) 暗い青(CC_DARK_BLUE) 深緑(CC_DARK_GREEN) 青緑(CC_BLUE_GREEN) 茶(CC_BROWN) // 暗い紫(CC_DARK_PURPLE) 黄土色(CC_OCHER) 薄い灰色(CC_LIGHT_GRAY) 灰色(CC_GRAY) // 青(CC_BLUE) 緑(CC_GREEN) 水色(CC_CYAN) 赤(CC_RED) マゼンタ・紅紫色(CC_MAGENTA) // 黄(CC_YELLOW) 白(CC_WHITE) #define CC_BLACK 0 #define CC_DARK_BLUE 1 #define CC_DARK_GREEN 2 #define CC_BLUE_GREEN 3 #define CC_BROWN 4 #define CC_DARK_PURPLE 5 #define CC_OCHER 6 #define CC_LIGHT_GRAY 7 #define CC_GRAY 8 #define CC_BLUE 9 #define CC_GREEN 10 #define CC_CYAN 11 #define CC_RED 12 #define CC_MAGENTA 13 #define CC_YELLOW 14 #define CC_WHITE 15 //----------------------------------------------------------------------------- // コンソールのサイズを取得する。 // cc_getsize(幅へのポインタ,高さへのポインタ) //----------------------------------------------------------------------------- void cc_getsize(int * wid, int * hgt) { HANDLE h = GetStdHandle(STD_OUTPUT_HANDLE); CONSOLE_SCREEN_BUFFER_INFO csbi; GetConsoleScreenBufferInfo(h, &csbi); * wid = csbi.srWindow.Right - csbi.srWindow.Left + 1; * hgt = csbi.srWindow.Bottom- csbi.srWindow.Top + 1; } //----------------------------------------------------------------------------- // 表示色を設定する。 // cc_color(文字色, 背景色) //----------------------------------------------------------------------------- void cc_color(int c, int b) { HANDLE h = GetStdHandle(STD_OUTPUT_HANDLE); SetConsoleTextAttribute(h, c | (b << 4)); } //----------------------------------------------------------------------------- // カーソルの位置を設定する。 // cc_locate(横位置x, 縦位置y) // 横位置と縦位置は,0以上の値とし,画面左上が原点(0, 0)である。 //----------------------------------------------------------------------------- void cc_locate(int x, int y) { HANDLE h = GetStdHandle(STD_OUTPUT_HANDLE); COORD p; p.X = x; p.Y = y; SetConsoleCursorPosition(h, p); } //----------------------------------------------------------------------------- // カーソルの表示状態を設定する。 // cc_cursor(表示状態) // 表示状態は,1で表示,0で表示しない。 //----------------------------------------------------------------------------- void cc_cursor(int v) { HANDLE h = GetStdHandle(STD_OUTPUT_HANDLE); CONSOLE_CURSOR_INFO i; GetConsoleCursorInfo(h, &i); i.bVisible = v; SetConsoleCursorInfo(h, &i); } //----------------------------------------------------------------------------- // 画面を背景色でクリアする。 // cc_clear(背景色) //----------------------------------------------------------------------------- void cc_clear(int b) { HANDLE h = GetStdHandle(STD_OUTPUT_HANDLE); CONSOLE_SCREEN_BUFFER_INFO i; DWORD w; COORD p = {0, 0}; GetConsoleScreenBufferInfo(h, &i); FillConsoleOutputAttribute(h, b << 4, i.dwSize.X * i.dwSize.Y, p, &w); FillConsoleOutputCharacter(h, ' ', i.dwSize.X * i.dwSize.Y, p, &w); }