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
.
将它们更改为新的背景颜色
我正在尝试创建一个具有文本颜色和背景颜色属性的函数。 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
.