windows OS 如何在不影响 c++ 中的文本颜色的情况下更改整个控制台的背景颜色

How to change the background color of the whole console without affecting the text color in c++ on windows OS

我正在尝试创建一个具有文本颜色和背景颜色属性的函数。 text color 属性只是设置要跟随的文本的颜色,而 background color 必须改变整个控制台的背景颜色 window.

问题是 SetConsoleTextAttribute() 函数只改变了文本块的背景颜色,而不是整个控制台的背景颜色 window。 system("Color code") 的问题在于它还会更改任何预先编写的文本的颜色。

我想做的是:

 int main()
 {
     setColor("Red","Blue");
     //custom function setColor() to set text color Red and Console's color Blue.

     cout << "This is Red text on a Blue console window" << endl;

     setColor("Yellow","Black"); /*now the whole console's color should turn Black, the color 
                                  of pre-written text above remains Red and the color of text 
                                  to follow should be Yellow.*/

     cout << "This is Yellow text on a Black console window, The previous text is still Red";
     return 0;
 }

我曾尝试混合使用 system()setConsoleTextAttribute 函数来实现此目的,但我未能在更改后续文本颜色时保留预写文本的颜色。

那么,有没有一种方法可以创建一个与本例中的 setColor() 函数功能相同的函数?

您需要自己实施。 Windows控制台API可以帮忙,所有的功能都是documented here.

您可以通过ReadConsoleOutputAttributes读取当前显示字符的颜色。您可以使用 WriteConsoleOutputAttributes.

将它们更改为新的背景颜色