본문 바로가기

공부/c언어

색깔 지정 소스코드(win32 api)

반응형

색깔지정.txt

#include <windows.h>
#include <stdio.h>


#define ATTR(b,f) ( (((b) << 4) & 0xF0) | ( (f) & 0x0F) )

enum
{
BLACK, // 0 : 000000 0000 까망
DARK_BLUE, // 1 : 000080 0001 어두운 파랑
DARK_GREEN, // 2 : 008000 0010 어두운 초록
DARK_SKY_BLUE, // 3 : 008080 0011 어두운 하늘
DARK_RED, // 4 : 800000 0100 어두운 빨강
DARK_VOILET, // 5 : 800080 0101 어두운 보라
DARK_YELLOW, // 6 : 808000 0110 어두운 노랑
DARK_GRAY, // 7 : 808080 0111 어두운 회색
GRAY, // 8 : C0C0C0 1000 회색
BLUE, // 9 : 0000FF 1001 파랑
GREEN, // 10 : 00FF00 1010 초록
SKY_BLUE, // 11 : 00FFFF 1011 하늘
RED, // 12 : FF0000 1100 빨강
VIOLET, // 13 : FF00FF 1101 보라
YELLOW, // 14 : FFFF00 1110 노랑
WHITE, // 15 : FFFFFF 1111 하양
};

void gotoxy(int x, int y)
{
HANDLE out = GetStdHandle(STD_OUTPUT_HANDLE);
COORD pos = {x,y};
SetConsoleCursorPosition(out,pos);
}

WORD get_color()
{
HANDLE out = GetStdHandle(STD_OUTPUT_HANDLE);
CONSOLE_SCREEN_BUFFER_INFO csbi;

GetConsoleScreenBufferInfo(out,&csbi);
return csbi.wAttributes;
}

void set_color(WORD attr)
{
HANDLE out = GetStdHandle(STD_OUTPUT_HANDLE);
CONSOLE_SCREEN_BUFFER_INFO csbi;

csbi.wAttributes = attr;
SetConsoleTextAttribute(out, attr);
}

void set_attr(int x, int y, WORD attr, DWORD n)
{
HANDLE out = GetStdHandle(STD_OUTPUT_HANDLE);
COORD xy = {x,y};
WORD buff[128]; // 128자까지만
int i;

if(128 < n) n = 128;
for(i=0; i < n; i++) buff[i] = attr;

WriteConsoleOutputAttribute(out,buff,n,xy,&n);
}

int main()
{
WORD attr1 = ATTR(RED,WHITE);
WORD attr2 = ATTR(BLUE,YELLOW);

gotoxy(10,10);
set_color(attr1); // 출력 글자 색
printf("HELLO COLOR");

set_attr(13,10,attr2,5); // 화면 색상 변경
set_color(0x0F); // 검정 바탕에 흰색 글자
}

 

//system("color F0"); 전체 화면 색깔 지정

 

반응형