代码之家  ›  专栏  ›  技术社区  ›  Tim Kruger

更改C++控制台应用程序的背景色

  •  0
  • Tim Kruger  · 技术社区  · 5 年前

    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...
    
    1 回复  |  直到 5 年前
        1
  •  1
  •   darune    5 年前

    你问:

    如何使用绿色、红色、蓝色以外的颜色?

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

    应用程序可以将前景和背景常数结合起来

    前景_蓝色|前景_绿色|前景_强度|

    如果未指定背景常数,则背景为黑色,并且 例如,以下组合在白色上生成黑色文本 出身背景

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

    每个屏幕缓冲区字符单元存储 单间牢房应用程序可以为每个字符单元设置颜色数据 分别将数据存储在 屏幕缓冲区用于随后写入或回显的字符 通过高级功能。

    应用程序可以使用GetConsoleScreenBufferInfo来确定 屏幕缓冲区的当前文本属性和 更改屏幕缓冲区的属性不会影响 以前写入的字符。这些文本属性不影响 WriteConsoleOutput或WriteConsoleOutputCharacter函数),其中 或者显式指定写入的每个单元格的属性

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