티스토리 뷰
콘솔로 출력을 하다보면 늘 검은색 화면에 밝은 회색의 글자들 보게 됩니다.
그런 콘솔을 알록달록하게 만들기 위해서 필요한 함수가 SetConsoleTextAttribute(...) 이죠.
BOOL WINAPI SetConsoleTextAttribute(_In_ HANDLE hConsoleOutput, _In_ WORD wAttributes);
함수의 원형은 다음과 같고
Windows.h 해더파일을 include 해주셔야합니다.
첫 번째 인자 HANDLE hConsoleOutput에는 출력할 콘솔의 헨들을 얻어와야 하므로 항상 GetStdHandle(STD_OUTPUT_HANDLE)을 넣어주고, 마지막 인자인 WORD wAttributes에는 색상을 입력하면 됩니다.
일단 콘솔에서 제공하는 색은 다음과 같습니다.
위의 색상은 상수로 선언되어 있어 FOREGROUND_뒤에 색상의 이름을 써주면 되는데요.
FOREGROUND_RED
FOREGROUND_BLUE
FOREGROUND_GREEN
FOREGROUND_INTENSITY
이렇게 총 4가지가 있는데요. 여기서 FOREGROUND_INTENSITY은 밝은 색을 의미하고, 4가지 색을 섞어서 색을 만듭니다.
색을 섞는건 밑을 참조하세요.(참고로 NULL을 입력하면 검은색이 나옵니다!)
참고
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 | #include <Windows.h> #include <iostream> using namespace std; void main() { SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), NULL); cout << "■" << endl; SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_RED); cout << "■" << endl; SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_BLUE); cout << "■" << endl; SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_GREEN); cout << "■" << endl; SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_RED | FOREGROUND_BLUE); cout << "■" << endl; SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_BLUE | FOREGROUND_GREEN); cout << "■" << endl; SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_GREEN | FOREGROUND_RED); cout << "■" << endl; SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_RED | FOREGROUND_BLUE | FOREGROUND_GREEN); cout << "■" << endl; SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_INTENSITY); cout << "■" << endl; SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_RED | FOREGROUND_INTENSITY); cout << "■" << endl; SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_BLUE | FOREGROUND_INTENSITY); cout << "■" << endl; SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_GREEN | FOREGROUND_INTENSITY); cout << "■" << endl; SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_RED | FOREGROUND_BLUE | FOREGROUND_INTENSITY); cout << "■" << endl; SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_BLUE | FOREGROUND_GREEN | FOREGROUND_INTENSITY); cout << "■" << endl; SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_GREEN | FOREGROUND_RED | FOREGROUND_INTENSITY); cout << "■" << endl; SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_RED | FOREGROUND_BLUE | FOREGROUND_GREEN | FOREGROUND_INTENSITY); cout << "■" << endl; } | cs |
'C & C++ > 콘솔' 카테고리의 다른 글
콘솔에서 그래픽 처리에 자주 사용하는 cmd 명령어 함수 - system (C/C++) (0) | 2014.10.22 |
---|---|
gotoxy - 커서 옮기는 함수 (C/C++) (1) | 2014.10.22 |
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday