C++ 设置控制台(命令行)窗口 光标位置,及前背景颜色
核心代码
#include"stdafx.h" #include#include /* #defineFOREGROUND_BLUE0x0001//textcolorcontainsblue. #defineFOREGROUND_GREEN0x0002//textcolorcontainsgreen. #defineFOREGROUND_RED0x0004//textcolorcontainsred. #defineFOREGROUND_INTENSITY0x0008//textcolorisintensified. #defineBACKGROUND_BLUE0x0010//backgroundcolorcontainsblue. #defineBACKGROUND_GREEN0x0020//backgroundcolorcontainsgreen. #defineBACKGROUND_RED0x0040//backgroundcolorcontainsred. #defineBACKGROUND_INTENSITY0x0080//backgroundcolorisintensified. */ //更改当前输出的颜色(前景色/背景色) voidColorPrintf(WORDcl,char*str) { staticHANDLEh=GetStdHandle(STD_OUTPUT_HANDLE); //WORDwOldColorAttrs; //CONSOLE_SCREEN_BUFFER_INFOcsbiInfo; //Firstsavethecurrentcolorinformation //GetConsoleScreenBufferInfo(h,&csbiInfo); //wOldColorAttrs=csbiInfo.wAttributes; //Setthenewcolorinformation SetConsoleTextAttribute(h,cl); printf(str); //Restoretheoriginalcolors //SetConsoleTextAttribute(h,wOldColorAttrs); SetConsoleTextAttribute(h,FOREGROUND_INTENSITY|FOREGROUND_INTENSITY); } //移动输入光标位置 voidMoveCursorTo(intx,inty) { staticHANDLEm=GetStdHandle(STD_OUTPUT_HANDLE); COORDcp={x,y}; SetConsoleCursorPosition(m,cp); } intmain(void) { charst[10]; ColorPrintf(FOREGROUND_BLUE|FOREGROUND_INTENSITY,"Thisisacolortest\n"); for(intj=0;j<255;j+=16) { for(inti=0;i<16;i++) { sprintf(st,"%02x",j+i); ColorPrintf(j+i,st); } printf("\n"); } //printf("\n\n"); //MoveCursorTo(1,9); //ColorPrintf(0x0083,"Thisisatest\n"); return0; }
终端/控制台设置颜色字体、光标定位和清屏
printf("\033[47;31mhelloworld\033[5m");
47是字背景颜色,31是字体的颜色,helloworld是字符串.后面的\033[5m是控制码.
颜色代码:
QUOTE:
字背景颜色范围:40--49字颜色:30--39
40:黑30:黑
41:红31:红
42:绿32:绿
43:黄33:黄
44:蓝34:蓝
45:紫35:紫
46:深绿36:深绿
47:白色37:白色
ANSI控制码:
QUOTE:
\033[0m关闭所有属性
\033[1m设置高亮度
\03[4m下划线
\033[5m闪烁
\033[7m反显
\033[8m消隐
\033[30m--\033[37m设置前景色
\033[40m--\033[47m设置背景色
\033[nA光标上移n行
\03[nB光标下移n行
\033[nC光标右移n行
\033[nD光标左移n行
\033[y;xH设置光标位置
\033[2J清屏
\033[K清除从光标到行尾的内容
\033[s保存光标位置
\033[u恢复光标位置
\033[?25l隐藏光标
\33[?25h显示光标
这样,在某些时候就可以实现动态的输出.