DOS창에서 색상을 변경하기는 사실 쉽다. 가장 쉽게 구할 수 있는 것이 "color"라는 도스 명령어를 이용하면 된다.
이는 화면 전체 색상을 손쉽게 변경한다. 아마 대부분 이를 이용할 것이다.
그러나 내가 원하는 것은 출력 결과에서 일부 결과를 색상을 변경해서 출력하고 싶었다. 아무리 찾아봐도 찾기 힘들었다. 포기하다가~ 오늘 다시 구글샘에게 물어보니 다행이 원하는 결과를 줬다. 구글샘 사랑해요~
작성일: 2009.09.21 (http://ospace.tistory.com/), ospace114@empal.com
실제 해보기
두가지 방식이 있다. 도스 명령어을 사용하는 방법과 코드 내에 내장하는 방식이 있다.
전자는 ctext라는 프로그램을 이용한 것이고, 후자는 SetConsoleTextAttribute()이용 한 것이다.
CTEXT 사용
먼저 이를 사용하려면 다운받아야 한다.
위 사이트에서 손쉽게 받을 수 있다. 이는 ANSI 없이도 컬러 텍스트를 출력할 수 있게해준다. 근데 이 프로그램이 windows me까지 지원했었다. 다행이 XP까지 잘 지원된다고 한다. 그 이상은 언급이 없다. 본인도 테스트해보지 않았기 때문에 장담할 수 없다.
간단한 예제를 보자. 자세한 예제는 다운 받은 파일에 있기 때문에 참고하길 바란다.
ctext.exe "{0A}0A - Bright Green{\n}"
근데 주의 할 것은 다음 프롬프트까지 녹색으로 변경되었다. 그렇기에 항상 원래 색상으로 변경해줘야한다. 역쉬 같은 형식으로 사용하면 된다.
ctext.exe "{07}07 - White{\n}"
한가지 응용으로 ctext.exe로는 글자 색만 변경하고, 실제 출력은 다른 곳에서 할 수 있다. 예를 들어 echo를 사용한 예를 보자.
ctext.exe "{0A}"
@echo 02 - Green
ctext.exe "{07}"
위와 같이 사용할 수 도 있다. 결과는 같다.
SetConsoleTextAttribute() 사용
위는 코드 내에 직접 사용하는 것이다. 실제 코드를 보면 다음과 같다. 아래 코드는 http://www.dreamincode.net/code/snippet1491.htm에서 직접 가져왔다.
/*******************************************************************
Use this function to set the color of text output to the screen.
This is for windows platform only.
Required header <windows.h>
COLOR CODES:
1 BLUE
2 GREEN
3 CYAN
4 RED
5 MAGENTA
6 BROWN
7 LIGHTGRAY
8 DARKGRAY
9 LIGHTBLUE
10 LIGHTGREEN
11 LIGHTCYAN
12 LIGHTRED
13 LIGHTMAGENTA
14 YELLOW
15 WHITE
***********************************************************************/
void setcolor(unsigned int color)
{
if (color >15 || color <=0)
{
printf( "Error\n");
}
else
{
HANDLE hcon = GetStdHandle(STD_OUTPUT_HANDLE);
SetConsoleTextAttribute(hcon,color);
}
}
사용법은 쉬울 것이다. 당연히 출력 코드 이전에 setcolor()를 호출하고 다시 원래 색상으로 setcolor() 해주면 된다.
결론
이렇게 해서 도스 창에서 색상을 지정해주면 좀 더 가독성이 높아지는 장점이 있다. 물론 너무 화려하게 혼란 스럽다.
에러 메시지는 빨간 색으로 사용하면 쉽게 에러를 눈으로 쉽게 확인할 수 있다.
가급적이면 사용할 메시지 타입에 따른 색상을 미리 정해서 3가지 색상 이하로 지정해서 사용하면 좋을 것이다. 물론 기본 색상은 제외이겠지요.ospace.
참조
http://www.dreamincode.net/code/snippet1491.htm
http://dennisbareis.com/freew32.htm
'3.구현 > VC++' 카테고리의 다른 글
VC에서 pseudo 디버깅 (0) | 2009.12.24 |
---|---|
프로그램의 메모리 사용량 측정하기 (0) | 2009.10.07 |
VC에서 윈도우 에러메시지 (0) | 2009.09.01 |
매크로를 조건에 따라 실행하기 (0) | 2009.08.14 |
리다이렉션이용한 디버깅 메시지 출력 (0) | 2009.08.14 |