我想将控制台的文本颜色设置为 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
在调用它们时保持不变。
我做错了什么?
另外,如果它有效,我假设背景颜色也会改变,因为我改变了整个调色板,那么如何将文本颜色设置为颜色表中的特定值,例如我放入ci->ColorTable[2] = cr;
函数changeColor()
而不是 for 循环,如何将文本颜色设置为现在存储的颜色ColorTable[2]
?