#ifndef __CONSOLE_H__ #define __CONSOLE_H__ #endif #include // 黒色 青色 緑色 水色 赤色 紫色 黄色 白色 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}; //高輝度 // ハンドル取得 HANDLE getOutConsole(){ return ::GetStdHandle(STD_OUTPUT_HANDLE); } // ハンドルが取得されているときのみハンドルを閉じる void freeConsole(HANDLE h){ if(h != INVALID_HANDLE_VALUE) ::CloseHandle(h); } // カーソルサイズと可視性を設定 CONSOLE_CURSOR_INFO setCursorInfo(HANDLE h, DWORD Size = 25, BOOL Visible = TRUE){ CONSOLE_CURSOR_INFO info; info.dwSize = Size; info.bVisible = Visible; ::SetConsoleCursorInfo(h, &info); return info; } // カーソル位置設定 void setCursorPosition(HANDLE h, short XPos, short YPos){ COORD coord; coord.X = XPos; coord.Y = YPos; ::SetConsoleCursorPosition(h, coord); } // 前景色・背景色設定 void setColor(HANDLE h, WORD Fore = L_WHITE, WORD Back = L_BLACK){ ::SetConsoleTextAttribute(h, Fore + (Back << 4)); } // 指定色で画面消去 void clearConsole(HANDLE h, WORD Fore = L_WHITE, WORD Back = L_BLACK){ CONSOLE_SCREEN_BUFFER_INFO csbi; DWORD numOfChars; // 書き込まれたセル数 COORD coord = {0, 0}; // コンソールスクリーンバッファの情報を取得 if(::GetConsoleScreenBufferInfo(h, &csbi)){ // 指定した数の文字セル分だけバッファの前景色と背景色を設定 ::FillConsoleOutputAttribute(h, Fore + (Back << 4), csbi.dwSize.X * csbi.dwSize.Y, coord, &numOfChars); // 指定した数だけバッファに空白を書き込む ::FillConsoleOutputCharacter(h, ' ', csbi.dwSize.X * csbi.dwSize.Y, coord, &numOfChars); } }