【问题标题】:Change background color of C++ console app更改 C++ 控制台应用程序的背景颜色
【发布时间】:2019-08-29 11:18:58
【问题描述】:

如果我想使用除绿色、红色、蓝色以外的颜色,如何更改控制台应用程序的前景色?以下是我的部分代码:

case GreenFlag:
    indicator = GreenFlag;
    SetConsoleTextAttribute(GetStdHandle (STD_OUTPUT_HANDLE), BACKGROUND_GREEN);
    cout << "Green message" << endl;
    break;
case OrangeFlag:
    indicator = OrangeFlag;
    // SetConsoleTextAttribute(GetStdHandle (STD_OUTPUT_HANDLE), BACKGROUND_ORANGE);
    cout << "Orange message" << endl;
    break;
case RedFlag:
    indicator = RedFlag;
    SetConsoleTextAttribute(GetStdHandle (STD_OUTPUT_HANDLE), BACKGROUND_RED);
    cout << "Red message" << endl;
    break;
case WhiteFlag:
    indicator = WhiteFlag;
    // SetConsoleTextAttribute(GetStdHandle (STD_OUTPUT_HANDLE), BACKGROUND_WHITE);
    cout << "White message" << endl;
    break;
etc...

【问题讨论】:

    标签: c++ console-application background-color


    【解决方案1】:

    你问:

    除了绿、红、蓝以外的颜色怎么用?

    您可以组合这些标志来创建新颜色:

    应用程序可以将前台和后台常量组合到 实现不同的颜色。例如下面的组合 在蓝色背景上生成明亮的青色文本。

    FOREGROUND_BLUE | FOREGROUND_GREEN | FOREGROUND_INTENSITY | 背景_蓝色

    如果没有指定背景常量,则背景为黑色,并且 如果未指定前景常量,则文本为黑色。为了 例如,以下组合在白色上生成黑色文本 背景。

    BACKGROUND_BLUE |背景_绿色 | Background_RED

    除此之外,您可以在每个字符上单独设置颜色和/或修改屏幕缓冲区属性:

    每个屏幕缓冲区字符单元存储颜色属性 用于绘制前景(文本)和背景的颜色 细胞。应用程序可以为每个字符单元格设置颜色数据 单独地,将数据存储在 Attributes 的成员中 每个单元格的 CHAR_INFO 结构。每个的当前文本属性 屏幕缓冲区用于随后写入或回显的字符 由高级函数。

    应用程序可以使用 GetConsoleScreenBufferInfo 来确定 屏幕缓冲区的当前文本属性和 SetConsoleTextAttribute 函数设置字符属性。 更改屏幕缓冲区的属性不会影响 以前写的字符。这些文本属性不影响 由低级控制台 I/O 函数写入的字符(例如 WriteConsoleOutput 或 WriteConsoleOutputCharacter 函数),其中 或者为每个写入的单元显式指定属性 或保持属性不变。

    有关文档和示例,请参阅: https://docs.microsoft.com/en-us/windows/console/using-the-high-level-input-and-output-functions

    【讨论】:

    • 感谢@durune 的回答。我会试一试,看看我能不能想出我需要的颜色!干杯
    • @TimothyKruger 不用担心,如果您遇到任何问题,请告诉我。
    • 干杯就好 ;-)。
    猜你喜欢
    • 1970-01-01
    • 2015-05-01
    • 1970-01-01
    • 2011-09-21
    • 1970-01-01
    • 2012-01-07
    • 2017-11-18
    • 1970-01-01
    相关资源
    最近更新 更多