위 2가지가 칼라풀한 글씨를 출력할수 있게해준다..
사용법은 매우 간단하다!
#include "console_color.h" // 헤더파일을 선언해주고
int main()
{
CONSOLE con; // CONSOLE 객체를 생성해준다.
int x = 22;
con.cprintf( 0x1, "message");
con.cprintf( 0x1, "variable %d \n", x ); // 이런식으로 사용할 수있다.
return 0;
}
의미는....
cprintf .. color printf 라는 의미로 지은것이고 2가지 형태로 오버로딩 되어있다.
한가지는 아스키 타입이고 ( multi byte ) 다른 한가지는 유니코드 타입 ( wide char ) 이다.
void cprintf( BG_TEXT_COLOR color, char *format, ... );
void cprintf( BG_TEXT_COLOR color, wchar_t *format, ... );
위의 형태가 원형이면고 BG_TEXT_COLOR 은 색상을 지정할수있는 WORD ( short ) 값이다.
마이크로 소프트에서 지정하는 값들도 있지만 별로 추천하지 않고, 직접 찾아서 쓰는것이 편하다.
다음 프로그램을 실행키시면
다음과 같은 색상표를 얻을 수 있고 원하는 색상을 골라서 16진수로 ( 0x???? ) 로 인자값을 넣어주면된다.
화면을 전체화면 모드로 변경하기위해
_FullScreen() 을 호출 할수 있으며 커서를 숨기거나 변경하기위해 _Cursor() 을 호출해줄 수도 있고,
창의 이름을 변경하기위해 _Title를 호출 할수도 있다.
당연한 애기겠지만.. private에 있는 녀석들은 직접 호출하지 말라는것이니 건드리지 않는것이 좋으며,
public 에 있는 함수중 '_' ( 언더바 )로 시작되는 함수들은 일반적인 유저들이 호출하길 권장하지는 않는다.
또한 동기화를 시키기위해서 ( 커서때문에 동기화가 필요하다 )
CONSOLE con( lpCriticalSection ); 처럼 크리티컬 섹션을 넘겨줌으로서 동기화를 할 수 있다.
멀티 스레드를 사용한다면 권장사양이다.
이외에도 특정위치의 글을 지우기위해 Clear() 을 지원한다.
당연한 사항으로 GotoXY역시 지원한다.
동기화를 하기위해 크리티컬섹션을 넘겨줬다면 비동기화 함수인 cprintf 를 호출한다면, 크리티컬섹션의 의미가 없어지므로,
void _synCprintf( short x, short y, BG_TEXT_COLOR color, char *format, ... );
void _synCprintf( short x, short y, BG_TEXT_COLOR color, wchar_t *format, ... );
위 2가지 동기화 함수를 호출 해야된다.
void cprintf( BG_TEXT_COLOR color, char *format, ... );
void cprintf( BG_TEXT_COLOR color, wchar_t *format, ... );
위 비동기 함수에 비해 출력위치를 지정하는 2가지 인자값이 추가된것이외에는 호출하는데 아무런 지장이없다.
또한 한번에 출력할 수 있는 문자열의 크기는 64로 지정되어 있다.
#define CONSOLE_BUF_SIZE 64
이부분을 수정하여 늘리거나 줄일 수 있다.
너무 큰값을 주게되면 전반적인 성능을 떨어뜨릴 위험이 존재하므로 적당한 값을 주는것이 좋다.
그럼... 이제 간단하게 칼라풀한 콘솔창을 만나보자!
'SYSTEM > Windows' 카테고리의 다른 글
Windows OS의 코드라인수... (0) | 2010.01.04 |
---|---|
프로그램 퍼포먼스 ( 실행성능 )의 측정하기... (0) | 2010.01.02 |
UAC 와 관련해서... WM_DROPFILES 메세지 핸들링... (0) | 2009.12.29 |
WINDBG를 이용한 커널키로거 탐지법 (0) | 2009.12.20 |
64비트 프로그램 만들기... (0) | 2009.12.14 |