如果我想使用绿色,红色,蓝色以外的颜色,该如何更改控制台应用程序的前景色?以下是我的部分代码:
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...
答案 0 :(得分:1)
您问过:
如何使用绿色,红色,蓝色以外的颜色?
您可以组合标记以创建新的颜色:
应用程序可以将前台和后台常量组合为 实现不同的颜色。例如,以下组合 会在蓝色背景上显示明亮的青色文字。
FOREGROUND_BLUE | FOREGROUND_GREEN | FOREGROUND_INTENSITY | Background_BLUE
如果未指定背景常数,则背景为黑色,并且 如果未指定前景常量,则文本为黑色。对于 例如,以下组合在白色上产生黑色文本 背景。
BACKGROUND_BLUE | Background_GREEN | Background_RED
除此之外,您可以在每个字符上分别设置颜色和/或修改屏幕缓冲区属性:
每个屏幕缓冲区字符单元格都存储 绘制前景(文本)和背景时使用的颜色 细胞。应用程序可以为每个字符单元设置颜色数据 分别将数据存储在 每个单元格的CHAR_INFO结构。每个文本的当前文本属性 屏幕缓冲区用于随后写入或回显的字符 通过高级功能。
应用程序可以使用GetConsoleScreenBufferInfo确定 屏幕缓冲区的当前文本属性以及 SetConsoleTextAttribute函数设置字符属性。 更改屏幕缓冲区的属性不会影响屏幕缓冲区的显示 以前写的字符。这些文本属性不影响 低级控制台I / O功能(例如 WriteConsoleOutput或WriteConsoleOutputCharacter函数),其中 要么为每个要写入的单元格明确指定属性 或保留属性不变。
有关文档和示例,请参见: https://docs.microsoft.com/en-us/windows/console/using-the-high-level-input-and-output-functions