利用函数SetConsoleTextAttribute()
,此函数包含在
中。
BOOL WINAPI SetConsoleTextAttribute(
_In_ HANDLE hConsoleOutput,
_In_ WORD wAttributes
);
第一个参数是输出设备句柄,此处常设置为GetStdHandle(STD_OUTPUT_HANDLE)
,用于获取标准输出设备的句柄,即屏幕窗口缓冲区信息。
第二个参数是文本信息的变量,存储了绘制文本、背景的颜色等属性,用于设置字体颜色和背景色,可用参数类型有两类分别为FOREGROUND_*
和BACKGROUND_*
。详细参数如下。
参数 | 作用 |
---|---|
FOREGROUND_INTENSITY | 设置前景色,即字体颜色,高亮显示。 |
FOREGROUND_RED | 设置字体为红色。 |
FOREGROUND_GREEN | 设置字体为绿色。 |
FOREGROUND_BLUE | 设置字体为蓝色。 |
BACKGROUND_INTENSITY | 设置背景颜色,高亮显示。 |
BACKGROUND_RED | 设置背景为红色。 |
BACKGROUND_GREEN | 设置背景为绿色。 |
BACKGROUND_BLUE | 设置背景为蓝色。 |
第二个参数还接受属性相加,如FOREGROUND_GREEN|FOREGROUND_BLUE
,代表字体颜色为青色(原型字体为白色,白色可通过 红+绿+蓝 设置)以及背景颜色是红色。
因此实际可设置颜色有7种。(红、绿、蓝、黄、紫、青、白)。
测试实例
#include
#include
using namespace std;
int main()
{
//字体
cout << "原型:白色" << endl;
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_RED);
cout << "红色" << endl;
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_BLUE);
cout << "蓝色" << endl;
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_GREEN);
cout << "绿色" << endl;
//设置字体回白色
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_RED | FOREGROUND_GREEN | FOREGROUND_BLUE | BACKGROUND_RED);
//背景
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), BACKGROUND_RED);
cout << "红色" << endl;
return 0;
}
测试结果
随之而来出现了一个新的问题:如何设置回默认值?
后补。
后续问题解决:
P1000 – 函数SetConsoleTextAttribute()应用后的字体恢复 及 原理解析