VS2015中修改控制台背景及输出字体颜色

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/hou09tian/article/details/82991361

在VS2015中可以使用system()函数或者SetConsoleTextAttribute()函数设置控制台背景及输出字体颜色,即背景色和前景色。

1 system()函数

system()函数作用唤醒指令处理器来执行系统指令。

1.1函数格式

该函数的格式为

int system(const char* command);

其中,参数command是要执行的系统指令。如果command是NULL,则system()函数返回指令处理器的状态,如果指令处理器处于可用状态,则返回值是非零;如果指令处理器处于非可用状态,则返回值是零。如果command是非NULL,则system()函数返回执行系统指令后的状态码。

1.2 color指令

通过系统指令“color”可以实现控制台颜色的修改。color指令的格式为

color [attr]

其中,attr是指定控制台输出的颜色属性。该颜色属性由两个十六进制数字指定,第一个数字表示背景颜色,第二个数组表示前景颜色。每个数字对应的颜色如图1所示。

图1 数字与颜色的对应关系

1.3相关代码

如果将控制台的颜色改为如图1所示的效果,则可以使用如下代码

system(“color 0A”);

以上代码的含义是将控制台的背景色设置为黑色,前景色设置为淡绿色。需要注意的是,system()函数在stdlib.h头文件中定义。

2 SetConsoleTextAttribute()函数

system()函数会改变改变之前控制台中所有输出的颜色,如果只是修改控制台部分输出的颜色,如图2所示,则需要使用SetConsoleTextAttribute()函数。

图2 修改控制台部分输出的颜色

SetConsoleTextAttribute()函数的作用是设置写入到控制台缓冲区中字符串的属性。

2.1 SetConsoleTextAttribute()函数格式

BOOL WINAPI SetConsoleTextAttribute(

    __in HANDLE hConsoleOutput

 ,  __in WORD wAttributes

);

其中,参数hConsoleOutput控制台输出缓冲区的句柄;wAttributes是字符串的属性。如果成功设置字符串属性,则该函数返回非零值,否则返回值是零。

2.2 GetStdHandle()函数

在“2.1 SetConsoleTextAttribute()函数格式”中提到,需要获取控制台输出缓冲区的句柄。通过GetStdHandle()函数即可实现该功能。

2.2.1 函数格式

GetStdHandle()函数的作用是获取指定的标准设备的句柄,其格式为

HANDLE WINAPI GetStdHandle(

  __in DWORD nStdHandle

);

其中,nStdHandle是标准的设备,其可能的取值为STD_INPUT_HANDLE、STD_OUTPUT_HANDLE和STD_ERROR_HANDLE,分别表示标准的输入设备、标准输出设备和标准错误处理设备。该函数的返回值即为指定设备的句柄。

2.3 相关代码

如图2所示,在输出离线状态的主机信息时,使用红色字体,在输入在线状态的主机信息时,使用绿色字体。其代码如下所示

SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_GREEN);

SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_RED);

其中,FOREGROUND_GREEN和FOREGROUND_RED分别表示将控制台的前景色设置为绿色和红色。

需要注意的是,使用SetConsoleTextAttribute()函数和GetStdHandle()函数在Windows.h中定义。

猜你喜欢

转载自blog.csdn.net/hou09tian/article/details/82991361