我想将控制台的文本颜色设置为RGB颜色。 我创建了一个函数来获取控制台的ColorTable并更改其中的颜色,但它不起作用。我不知道如何将文本颜色设置为颜色表中的值,所以我只是更改整个颜色表,但它什么都不做。C++将控制台文本颜色设置为RGB值
void setColor(int r, int g, int b)
{
COLORREF cr;
cr = RGB(r, g, b);
PCONSOLE_SCREEN_BUFFER_INFOEX ci;
CONSOLE_SCREEN_BUFFER_INFOEX cir;
ci = ○
HANDLE hConsole = GetStdHandle(STD_OUTPUT_HANDLE);
GetConsoleScreenBufferInfoEx(hConsole , ci);
cout <<hex<< ci->ColorTable[2];
for(int i=0;i<16;i++){
ci->ColorTable[i] = cr;
}
SetConsoleScreenBufferInfoEx(hConsole, ci);
GetConsoleScreenBufferInfoEx(hConsole , ci);
cout <<endl << ci->ColorTable[2];
}
在main()
我调用该函数多次,但输出是一样的每一个电话和颜色没有变化。 SetConsoleScreenBufferInfoEx()
和GetConsoleScreenBufferInfoEx()
似乎没有任何作用,ci
在被调用时保持不变。
我该怎么做?
此外,如果它工作,我认为背景颜色也会因为我改变整个调色盘而发生变化,所以如何将颜色表中的文本颜色设置为特定值,例如,我把ci->ColorTable[2] = cr;
放在changeColor()
函数中而不是for循环中,我怎样才能将文本颜色设置为现在存储在ColorTable[2]
中的颜色?
我不知道这是否是有用的,但你可以看看相关的问题http://stackoverflow.com/questions/8285825/how-to-change -text-or-background-color-in-a-windows-console-application和http://stackoverflow.com/questions/4053837/c-colors-in-console-different-colors-in-different-text。 –