我想將控制檯的文本顏色設置爲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。 –