gpt4 book ai didi

c++ - 设置控制台文本属性 : Foreground only

转载 作者:行者123 更新时间:2023-11-28 00:57:10 24 4
gpt4 key购买 nike

我只想更改控制台应用程序的前景色文本,而不是背景文本颜色或控制台背景颜色。换句话说:我想保持以前的颜色,除了前景文本颜色。

目前我使用下面的代码,但文本下的背景也发生了变化。

#include <windows.h>
#include <iostream>
using namespace std;

int main(int argc, char* argv[])
{

SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_GREEN);
cout << "green?" << endl;
cin.ignore();
return 0;
}

最佳答案

使用 GetConsoleScreenBufferInfoEx 获取当前颜色属性,并仅更改前景。

以下内容虽然未经测试,但无论您以何种背景颜色开始,都应该有效:

HANDLE outputHandle = GetStdHandle (STD_OUTPUT_HANDLE); //used twice
CONSOLE_SCREEN_BUFFER_INFOEX cbie; //hold info

//article didn't say this was necessary, but to be on the safe side...
cbie.cbSize = sizeof (CONSOLE_SCREEN_BUFFER_INFOEX);

GetConsoleScreenBufferInfoEx (outputHandle, &cbie); //get info

//first, cancel out all foreground attributes
//then, set the ones you want (I use bright red)
cbie.wAttributes &=
~(FOREGROUND_RED | FOREGROUND_GREEN | FOREGROUND_BLUE | FOREGROUND_INTENSITY);
cbie.wAttributes |= (FOREGROUND_RED | FOREGROUND_INTENSITY);

SetConsoleScreenBufferInfoEx (outputHandle, &cbie); //pass updated info back

关于c++ - 设置控制台文本属性 : Foreground only,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10463540/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com