티스토리 뷰

콘솔로 출력을 하다보면 늘 검은색 화면에 밝은 회색의 글자들 보게 됩니다.

그런 콘솔을 알록달록하게 만들기 위해서 필요한 함수가 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

 


댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday