核心代码
#include "stdafx.h"
#include <stdio.h>
#include <windows.h>
/*
#define FOREGROUND_BLUE 0x0001 // text color contains blue.
#define FOREGROUND_GREEN 0x0002 // text color contains green.
#define FOREGROUND_RED 0x0004 // text color contains red.
#define FOREGROUND_INTENSITY 0x0008 // text color is intensified.
#define BACKGROUND_BLUE 0x0010 // background color contains blue.
#define BACKGROUND_GREEN 0x0020 // background color contains green.
#define BACKGROUND_RED 0x0040 // background color contains red.
#define BACKGROUND_INTENSITY 0x0080 // background color is intensified.
*/
//更改当前输出的颜色(前景色/背景色)
void ColorPrintf(WORD cl,char* str)
{
static HANDLE h = GetStdHandle ( STD_OUTPUT_HANDLE );
//WORD wOldColorAttrs;
//CONSOLE_SCREEN_BUFFER_INFO csbiInfo;
//First save the current color information
//GetConsoleScreenBufferInfo(h, &csbiInfo);
//wOldColorAttrs = csbiInfo.wAttributes;
//Set the new color information
SetConsoleTextAttribute ( h, cl );
printf ( str);
//Restore the original colors
//SetConsoleTextAttribute ( h, wOldColorAttrs);
SetConsoleTextAttribute(h, FOREGROUND_INTENSITY | FOREGROUND_INTENSITY);
}
//移动输入光标位置
void MoveCursorTo(int x,int y)
{
static HANDLE m=GetStdHandle(STD_OUTPUT_HANDLE);
COORD cp={x,y};
SetConsoleCursorPosition(m,cp);
}
int main ( void )
{
char st[10];
ColorPrintf (FOREGROUND_BLUE | FOREGROUND_INTENSITY, "This is a color testn" );
for (int j=0;j<255;j+=16)
{
for (int i=0;i<16;i++)
{
sprintf(st,"%02x ",j+i);
ColorPrintf(j+i,st);
}
printf("n");
}
//printf("nn");
//MoveCursorTo( 1, 9 );
//ColorPrintf(0x0083,"This is a testn");
return 0;
}
终端/控制台设置颜色字体、光标定位和清屏
printf(" 33[47;31mhello world 33[5m");
47是字背景颜色, 31是字体的颜色, hello world是字符串. 后面的 33[5m是控制码.
颜色代码:
QUOTE:
字背景颜色范围: 40--49 字颜色: 30--39
40: 黑 30: 黑
41: 红 31: 红
42: 绿 32: 绿
43: 黄 33: 黄
44: 蓝 34: 蓝
45: 紫 35: 紫
46: 深绿 36: 深绿
47: 白色 37: 白色
ANSI控制码:
QUOTE: