SetConsoleTextAttribute函式改變文字和背景顏色
阿新 • • 發佈:2021-02-01
技術標籤:C/C++
C語言不總是“黑底白字”,它也可以是彩色的,可以呼叫Windows.h
標頭檔案下的SetConsoleTextAttribute
函式改變文字和背景顏色。
呼叫形式為:
SetConsoleTextAttribute( HANDLE hConsoleOutput, WORD wAttributes );
hConsoleOutput
表示控制檯緩衝區控制代碼,可以通過GetStdHandle(STD_OUTPUT_HANDLE)
來獲得;wAttributes
表示文字顏色和背景顏色。
這裡不去追究HANDLE的含義,後續在 Windows開發中會詳細講解。
WORD
在windows.h
unsigned short
,使用低4位表示文字(前景)顏色,高4位表示文字背景顏色,所以它的取值為xx
。x為一位16進位制數,即0~F
都可以使用,可以隨意組合。0~F 分別代表的顏色如下:
0 = 黑色 8 = 灰色 1 = 淡藍 9 = 藍色
2 = 淡綠 A = 綠色 3 = 湖藍 B = 淡淺綠
C = 紅色 4 = 淡紅 5 = 紫色 D = 淡紫
6 = 黃色 E = 淡黃 7 = 白色 F = 亮白
例如,將背景設定為淡綠色,文字設定為紅色:
#include <stdio.h> #include <windows.h> int main(){ HANDLE hConsole = GetStdHandle(STD_OUTPUT_HANDLE); SetConsoleTextAttribute(hConsole, 0x2C ); puts("C語言中文網"); return 0; }
執行結果:
如果只希望設定文字顏色,背景保持黑色,那麼也可以只給出一位16進位制數,例如:
SetConsoleTextAttribute(hConsole, 0xC ); //將文字顏色設定為紅色 SetConsoleTextAttribute(hConsole, 0xF ); //將文字顏色設定為白色
再來看一個例子:
#include <stdio.h> #include <windows.h> int main(){ HANDLE hConsole = GetStdHandle(STD_OUTPUT_HANDLE); SetConsoleTextAttribute(hConsole, 0xC ); puts("紅色文字"); SetConsoleTextAttribute(hConsole, 0xF ); puts("白色文字"); SetConsoleTextAttribute(hConsole, 2 ); puts("淡綠色文字"); return 0; }
執行結果: