我想将控制台的文本颜色设置为RGB颜色。我创建了一个函数来获取控制台的ColorTable并更改其中的颜色,但它不起作用。我不知道如何将文本颜色设置为颜色表中的值,所以我只更改了整个颜色表,但这没有任何效果。
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
保持不变。你做错了什么?
此外,如果它起作用,我假设背景颜色也会改变,因为我改变了整个调色板,那么如何将文本颜色设置为来自颜色表的特定值,例如我在
changeColor()
函数中放置 ci->ColorTable [2] = cr;
而不是for循环,如何将文本颜色设置为现在存储在ColorTable [2]
中的颜色?