一种方法是直接在程序上方栏杆点右键,然后属性处设置
优点是设置后一劳永逸,不需要像后面方法那样要自己把设置写入程序代码内
缺点是,一旦设置了就不能再改变了,程序从头到尾都是那种设置。
第二种方法是使用windows API函数里的system()
color /? 里面写的很清楚
颜色属性由两个十六进制数字指定 -- 第一个为背景,第二个则为前景。每个数字可以为以下任何值之一:
0 = 黑色 8 = 灰色
1 = 蓝色 9 = 淡蓝色
2 = 绿色 A = 淡绿色
3 = 湖蓝色 B = 淡浅绿色
4 = 红色 C = 淡红色
5 = 紫色 D = 淡紫色
6 = 黄色 E = 淡黄色
7 = 白色 F = 亮白色
如调用 system("color 02") 则颜色会变为,黑底蓝字
优点是调用方便,只需要加一个函数即可
缺点是设置的是全局变量,也就是设置后,前面显示的文字以及以后出现的都会变为这个设置
第三种方法是SetConsoleTextAttribute()包含在头文件 windows.h
函数原型BOOL SetConsoleTextAttribute(HANDLE hConsoleOutput, WORD wAttributes);
参数
consolehwnd = GetStdHandle(STD_OUTPUT_HANDLE);
GetStdHandle(nStdHandle)是返回标准的输入、输出或错误的设备的句柄,也就是获得输入、输出/错误的屏幕缓冲区的句柄。
其参数nStdHandle的值为下面几种类型的一种:
值 | 含义 |
STD_INPUT_HANDLE | 标准输入的句柄 |
STD_OUTPUT_HANDLE | 标准输出的句柄 |
STD_ERROR_HANDLE | 标准错误的句柄 |
wAttributes是用来设置颜色的参数:
wAttributes | 颜色 | 对应的值 |
FOREGROUND_BLUE | 字体颜色:蓝 | 1 |
FOREGROUND_GREEN | 字体颜色:绿 | 2 |
FOREGROUND_RED | 字体颜色:红 | 4 |
FOREGROUND_INTENSITY | 前景色高亮显示 | 8 |
BACKGROUND_BLUE | 背景颜色:蓝 | 16 |
BACKGROUND_GREEN | 背景颜色:绿 | 32 |
BACKGROUND_RED |
背景颜色:红
| 64 |
BACKGROUND_INTENSITY | 背景色高亮显示 | 128 |
也就是说SetConsoleTextAttribute函数是靠一个字节的低四来控制前景色,高四位来控制背景色。