C++控制台输出带颜色字体--SetConsoleTextAttribute()的应用

利用函数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;
}

测试结果
C++控制台输出带颜色字体--SetConsoleTextAttribute()的应用_第1张图片
随之而来出现了一个新的问题:如何设置回默认值?
后补。

后续问题解决:
P1000 – 函数SetConsoleTextAttribute()应用后的字体恢复 及 原理解析

你可能感兴趣的:(洛谷)