SetConsoleTextAttribute(參數表)。
SetConsoleTextAttribute()函數是一個API設置字體顏色和背景色的函數。參數表中使用兩個屬性(屬性之間用,隔開)。GetStdHandle()和FOREGROUND_*或BACKGROUND_*。*值為INTENSITY或RED或GREEN或BLUE。第一個屬性獲得句柄(即要設置顏色的地方),第二個屬性設置顏色。屬性相加是在屬性值中間加“|”隔開即可。
GetStdHandle(STD_OUTPUT_HANDLE)獲得句柄。
FOREGROUND_INTENSITY 表示設置前景色為高亮顯示。
FOREGROUND_RED 表示設置前景色為紅色,即字體顏色為紅色。
FOREGROUND_GREEN 表示設置前景色為綠色,即字體顏色為綠色。
FOREGROUND_BLUE 表示設置前景色為藍色,即字體顏色為藍色。
BACKGROUND_INTENSITY 表示設置背景色為高亮顯示。
BACKGROUND_RED 表示設置背景色為紅色。
BACKGROUND_GREEN 表示設置背景色為綠色。
BACKGROUND_BLUE 表示設置背景色為藍色。
…… …… …… …… …… ……
說明:在使用時要在預處理中包含window.h頭文件
舉例如下:
#include <iostream> #include "windows.h" using namespace std; int main() { cout << "原色testCOLOR(沒有設置字體顏色)" << endl; SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_INTENSITY |FOREGROUND_RED |FOREGROUND_GREEN | FOREGROUND_BLUE);//設置三色相加 cout << "白色testCOLOR(紅色綠色藍色相加)" << endl; SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_INTENSITY | FOREGROUND_RED);//設置紅色 cout << "紅色testCOLOR(設置的顏色為紅色)" << endl; SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_INTENSITY | FOREGROUND_GREEN);//設置綠色 cout << "綠色testCOLOR(設置的顏色為綠色)" << endl; SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_INTENSITY | FOREGROUND_BLUE);//設置藍色 cout << "藍色testCOLOR(設置的顏色為藍色)" << endl; SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_INTENSITY | FOREGROUND_RED |FOREGROUND_GREEN);//設置紅色和綠色相加 cout << "黃色testCOLOR(紅色和綠色相加色)" << endl; SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_INTENSITY | FOREGROUND_RED |FOREGROUND_BLUE);//設置紅色和藍色相加 cout << "粉色testCOLOR(紅色和藍色相加色)" << endl; SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_INTENSITY | FOREGROUND_GREEN |FOREGROUND_BLUE);//設置綠色和藍色相加 cout << "青色testCOLOR(綠色和藍色相加色)" << endl; SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_INTENSITY);//設置顏色,沒有添加顏色,故為原色 cout << endl; system("pause"); return 0; }
其中遵循顏色相加的法則。
前景色和背景色的區別:前景色是字體的顏色。背景色是字體后面的顏色(相當於做筆記高亮那一句的感覺)
經過測試,在改變顏色后無法再改回到初始狀態下。盡管不設置顏色,依然和最初情況不同,我猜測是cmd窗口默認的顏色不只是這三種顏色混合成的。不設置顏色時比最初的白色字體要暗,設置為三色疊加時比最初的白色字體要亮(就是一個是灰白,一個是亮白,默認的初始狀況在兩者之間)