1. 程式人生 > 其它 >SetConsoleTextAttribute函式改變文字和背景顏色

SetConsoleTextAttribute函式改變文字和背景顏色

技術標籤:C/C++

C語言不總是“黑底白字”,它也可以是彩色的,可以呼叫Windows.h標頭檔案下的SetConsoleTextAttribute函式改變文字和背景顏色。

呼叫形式為:

SetConsoleTextAttribute( HANDLE hConsoleOutput, WORD wAttributes );

hConsoleOutput表示控制檯緩衝區控制代碼,可以通過GetStdHandle(STD_OUTPUT_HANDLE)來獲得;wAttributes表示文字顏色和背景顏色。

這裡不去追究HANDLE的含義,後續在 Windows開發中會詳細講解。

WORDwindows.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;
}

執行結果: