Tuesday, June 13, 2006
C언어/C++] 비주얼C로 콘솔 글자 색깔 변경, 볼랜드C++의 textcolor() 함수 구현
볼랜드C는 textcolor() 함수 등으로, 텍스트 모드의 글자들의 색을 바꿀 수 있지만, 비주얼C에는 textcolor() 함수가 없습니다. 그렇지만 여기서 소개하는 방법으로 색을 변경할 수 있습니다:
(Windows.h 라는 헤더파일이 필요합니다. 비주얼 스튜디오가 설치되어 있다면 Windows.h 도 있겠지만, "Visual C++ 2003 의 무료 버전" 을 설치하면 그 안에 Windows.h 가 없는데, Platform SDK 안에 Windows.h 가 들어 있습니다. Platform SDK 도 무료로 다운이 가능합니다.)
결과:
코드: 아래의 코드를 0.cpp 등의 이름으로 저장하여 컴파일하면 위의 그림과 같이 글자의 색깔이 바뀝니다.
참고로, 볼랜드C의 경우 textcolor() 는, conio.h 헤더파일에 정의되어 있습니다. textcolor()로 색을 지정하고 cprintf()로 글자를 출력해야만 색이 바뀝니다. 그냥 printf() 로는 안될 겁니다.
여기서 소개한 코드를 실용적인 유틸리티로 만든 것이 여기에 있습니다: [C언어] COLOR 명령 확장: 명령프롬프트 글자색 변경 유틸리티 setclr.exe 만들기
(Windows.h 라는 헤더파일이 필요합니다. 비주얼 스튜디오가 설치되어 있다면 Windows.h 도 있겠지만, "Visual C++ 2003 의 무료 버전" 을 설치하면 그 안에 Windows.h 가 없는데, Platform SDK 안에 Windows.h 가 들어 있습니다. Platform SDK 도 무료로 다운이 가능합니다.)
결과:
코드: 아래의 코드를 0.cpp 등의 이름으로 저장하여 컴파일하면 위의 그림과 같이 글자의 색깔이 바뀝니다.
#include <stdio.h>
#include <Windows.h>
int main() {
// 밝은 청색
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_BLUE | FOREGROUND_INTENSITY);
puts("Light Blue");
// 밝은 녹색
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_GREEN | FOREGROUND_INTENSITY);
puts("Light Green");
// 밝은 시안
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_GREEN | FOREGROUND_BLUE | FOREGROUND_INTENSITY);
puts("Light Aqua (Cyan)");
// 밝은 적색
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_RED | FOREGROUND_INTENSITY);
puts("Light Red");
// 밝은 마젠타
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_RED | FOREGROUND_BLUE | FOREGROUND_INTENSITY);
puts("Light Purple (Magenta)");
// 밝은 황색
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_RED | FOREGROUND_GREEN | FOREGROUND_INTENSITY);
puts("Light Yellow");
// 밝은 백색
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_RED | FOREGROUND_GREEN | FOREGROUND_BLUE | FOREGROUND_INTENSITY);
puts("Bright White");
// 원래의 회색 글자로
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_RED | FOREGROUND_GREEN | FOREGROUND_BLUE);
puts("Gray (System Default)");
return 0;
}
#include <Windows.h>
int main() {
// 밝은 청색
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_BLUE | FOREGROUND_INTENSITY);
puts("Light Blue");
// 밝은 녹색
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_GREEN | FOREGROUND_INTENSITY);
puts("Light Green");
// 밝은 시안
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_GREEN | FOREGROUND_BLUE | FOREGROUND_INTENSITY);
puts("Light Aqua (Cyan)");
// 밝은 적색
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_RED | FOREGROUND_INTENSITY);
puts("Light Red");
// 밝은 마젠타
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_RED | FOREGROUND_BLUE | FOREGROUND_INTENSITY);
puts("Light Purple (Magenta)");
// 밝은 황색
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_RED | FOREGROUND_GREEN | FOREGROUND_INTENSITY);
puts("Light Yellow");
// 밝은 백색
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_RED | FOREGROUND_GREEN | FOREGROUND_BLUE | FOREGROUND_INTENSITY);
puts("Bright White");
// 원래의 회색 글자로
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_RED | FOREGROUND_GREEN | FOREGROUND_BLUE);
puts("Gray (System Default)");
return 0;
}
참고로, 볼랜드C의 경우 textcolor() 는, conio.h 헤더파일에 정의되어 있습니다. textcolor()로 색을 지정하고 cprintf()로 글자를 출력해야만 색이 바뀝니다. 그냥 printf() 로는 안될 겁니다.
여기서 소개한 코드를 실용적인 유틸리티로 만든 것이 여기에 있습니다: [C언어] COLOR 명령 확장: 명령프롬프트 글자색 변경 유틸리티 setclr.exe 만들기
tag: cpp
C언어 | C/C++ (Visual C++)
<< Home