C++에서는 windows api를 사용할 수 있습니다. 이 기능을 통해서 콘솔창에서 커서의 깜빡임 유무, 글자색, 배경색외 다양한 기능들을 활용 할 수 있습니다.
#include<Windows.h>
class Api
{
int BLACk =0;
int Dark_blue =1;
int Dark_green =2;
int Dark_sky_blue =3;
int Dark_red =4;
int Dark_voilet =5;
int Dark_yellow =6;
int Gray =7;
int Dark_gray =8;
int Blue =9;
int green =10;
int Sky_blue =11;
int red =12;
int voilet =13;
int yellow =14;
int White =15;
int x;
int y;
int color;
public :
Api();
~Api();
int gotoxy(int x, int y);
void SetColor(int color, int bgcolr);
void SetCursor(bool visible);
};
제가 사용했던 윈도우 api의 기능은 크게 세가지 입니다. gotoxy메소드를 통한 커서의 위치 이동,Setcolor 메소드를 통하 한 글자색과 배경색 변경 SetCursor 메소드를 통한 커서의 깜빡임 유무 제어입니다.
클래스 멤버로는 int 변수에 rgb 색정보에 해당하는 숫자들을 저장하였습니다.
int Api::gotoxy(int x, int y)
{
HANDLE hConsole = GetStdHandle(STD_OUTPUT_HANDLE);
COORD pos;
pos.X = x;
pos.Y = y;
SetConsoleCursorPosition(hConsole, pos);
}
gotoxy의 구현입니다. 커서의 위치를 변경함으로서 이와 연계해서 콘솔창에 출력하고 싶은 위치를 변경할 수 있습니다.
void Api::SetColor(int color, int bgcolr)
{
static HANDLE std_output_handle = GetStdHandle(STD_OUTPUT_HANDLE);
SetConsoleTextAttribute(std_output_handle, bgcolr <<4| color);
}
SetColor의 구현 이때 첫번째 매개변수는 글자색, 두번째 매개변수는 배경색을 나타냅니다. 또한
기본 콘솔창의 색정보는 SetColor(7,0) 입니다.
void Api::SetCursor(bool visible)
{
CONSOLE_CURSOR_INFO ConsoleCursor;
ConsoleCursor.bVisible = visible;
ConsoleCursor.dwSize =1;
SetConsoleCursorInfo(GetStdHandle(STD_OUTPUT_HANDLE), &ConsoleCursor);
}
True,False 입력을 통해서 커서으 깜빡임을 제어할 수 있습니다.