Last active
March 6, 2016 09:28
-
-
Save LusainKim/882cd024d264a3adb9a3 to your computer and use it in GitHub Desktop.
Console Utility
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| ///////////////////////////////////////////////////// | |
| // consoleUtil.h | |
| // 콘솔에서 사용함직한 함수들을 모아 정리해봤습니다. | |
| ///////////////////////////////////////////////////// | |
| #pragma once | |
| namespace ConsoleUtil { | |
| // Windows.h 가 포함됐다면 두 번 연결할 필요는 없다 | |
| #ifndef _WINDOWS_ | |
| #include <windows.h> | |
| #endif | |
| #include <conio.h> | |
| #define TEXTCOLOR_RED (FOREGROUND_RED | FOREGROUND_INTENSITY) | |
| #define TEXTCOLOR_GREEN (FOREGROUND_GREEN | FOREGROUND_INTENSITY) | |
| #define TEXTCOLOR_BLUE (FOREGROUND_BLUE | FOREGROUND_INTENSITY) | |
| #define TEXTCOLOR_CYAN (FOREGROUND_GREEN | FOREGROUND_BLUE | FOREGROUND_INTENSITY) | |
| #define TEXTCOLOR_YELLOW (FOREGROUND_RED | FOREGROUND_GREEN | FOREGROUND_INTENSITY) | |
| #define TEXTCOLOR_ORIGIN (FOREGROUND_RED | FOREGROUND_GREEN | FOREGROUND_BLUE) | |
| #define TEXTCOLOR_WHITE (FOREGROUND_RED | FOREGROUND_GREEN | FOREGROUND_BLUE | FOREGROUND_INTENSITY) | |
| #define ConsoleUtil_consoleHandler (HANDLE)GetStdHandle(STD_OUTPUT_HANDLE) | |
| // 텍스트의 색상을 변경합니다. 기본 색은 다음과 같습니다 : | |
| // TEXTCOLOR_RED : 밝은 빨간색입니다. | |
| // TEXTCOLOR_GREEN : 밝은 초록색입니다. | |
| // TEXTCOLOR_BLUE : 밝은 파랑색입니다. | |
| // TEXTCOLOR_CYAN : 밝은 하늘색입니다. | |
| // TEXTCOLOR_YELLOW : 밝은 노란색입니다. | |
| // TEXTCOLOR_WHITE : 밝은 하얀색입니다. | |
| inline void SetTextColor(WORD colors) { SetConsoleTextAttribute(ConsoleUtil_consoleHandler, colors); } | |
| //원하는 위치로 캐럿을 옮길 수 있습니다. | |
| inline int gotoxy(int x, int y) | |
| { | |
| if (ConsoleUtil_consoleHandler == INVALID_HANDLE_VALUE) | |
| return 0; | |
| COORD coords = { (short)(x), (short)(y) }; | |
| SetConsoleCursorPosition(ConsoleUtil_consoleHandler, coords); | |
| return 1; | |
| } | |
| // 현재 캐럿의 x 위치입니다. | |
| inline int wherex() | |
| { | |
| if (ConsoleUtil_consoleHandler == INVALID_HANDLE_VALUE) | |
| return 0; | |
| CONSOLE_SCREEN_BUFFER_INFO screenInfo; | |
| GetConsoleScreenBufferInfo(ConsoleUtil_consoleHandler, &screenInfo); | |
| return screenInfo.dwCursorPosition.X; | |
| } | |
| // 현재 캐럿의 x 위치입니다. | |
| inline int wherey() | |
| { | |
| if (ConsoleUtil_consoleHandler == INVALID_HANDLE_VALUE) | |
| return 0; | |
| CONSOLE_SCREEN_BUFFER_INFO screenInfo; | |
| GetConsoleScreenBufferInfo(ConsoleUtil_consoleHandler, &screenInfo); | |
| return screenInfo.dwCursorPosition.Y; | |
| } | |
| // 현재 콘솔의 x 최대값입니다. | |
| inline int bufferMaxX() | |
| { | |
| if (ConsoleUtil_consoleHandler == INVALID_HANDLE_VALUE) | |
| return 0; | |
| CONSOLE_SCREEN_BUFFER_INFO screenInfo; | |
| GetConsoleScreenBufferInfo(ConsoleUtil_consoleHandler, &screenInfo); | |
| return screenInfo.dwMaximumWindowSize.X; | |
| } | |
| // 현재 콘솔의 y 최대값입니다. | |
| inline int bufferMaxY() | |
| { | |
| if (ConsoleUtil_consoleHandler == INVALID_HANDLE_VALUE) | |
| return 0; | |
| CONSOLE_SCREEN_BUFFER_INFO screenInfo; | |
| GetConsoleScreenBufferInfo(ConsoleUtil_consoleHandler, &screenInfo); | |
| return screenInfo.dwMaximumWindowSize.Y; | |
| } | |
| // 시간 측정을 편하게 하는 매크로 | |
| // c++ iostream, chrono 필요 | |
| // chrono::system_clock::time_point nCurrentTime; | |
| // chrono::duration<double> cftimeElapsed; | |
| // | |
| // start_timer(nCurrentTime); | |
| // | |
| // TODO : 원하는 작업 | |
| // | |
| // check_duration(cftimeElapsed, nCurrentTime); | |
| #define start_timer(timer) ((timer) = std::chrono::system_clock::now()) | |
| #define check_duration(duration, timer) ((duration) = std::chrono::system_clock::now() - (timer)) | |
| }; |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment