基本介紹
- 外文名:SetConsoleTextAttribute
- 性質:函式
- 用途:設定字型顏色和背景色
- 套用範圍:電腦編程
簡介,原型,參數,程式例,其他寫法,套用舉例,
簡介
原型
BOOL SetConsoleTextAttribute(HANDLE hConsoleOutput, WORD wAttributes);
參數
consolehwnd = GetStdHandle(STD_OUTPUT_HANDLE);
GetStdHandle(nStdHandle)是返回標準的輸入、輸出或錯誤的設備的句柄,也就是獲得輸入、輸出/錯誤的螢幕緩衝區的句柄。
其參數nStdHandle的值為下面幾種類型的一種:
值 | 含義 |
STD_INPUT_HANDLE | 標準輸入的句柄 |
STD_OUTPUT_HANDLE | 標準輸出的句柄 |
STD_ERROR_HANDLE | 標準錯誤的句柄 |
wAttributes是用來設定顏色的參數:
wAttributes | 顏色 | 對應的值 |
FOREGROUND_BLUE | 字型顏色:藍 | 1 |
FOREGROUND_GREEN | 字型顏色:綠 | 2 |
FOREGROUND_RED | 字型顏色:紅 | 4 |
FOREGROUND_INTENSITY | 前景色高亮顯示 | 8 |
BACKGROUND_BLUE | 背景顏色:藍 | 16 |
BACKGROUND_GREEN | 背景顏色:綠 | 32 |
BACKGROUND_RED | 背景顏色:紅 | 64 |
BACKGROUND_INTENSITY | 背景色高亮顯示 | 128 |
也就是說SetConsoleTextAttribute函式是靠一個位元組的低四來控制前景色,高四位來控制背景色。
程式例
#include<stdio.h>#include<windows.h>int main(void){HANDLE consolehwnd;//創建句柄,詳細句柄知識,請百度一下或查MSDNconsolehwnd=GetStdHandle(STD_OUTPUT_HANDLE);//實例化句柄SetConsoleTextAttribute(consolehwnd,FOREGROUND_RED);//設定字型顏色printf("hello");SetConsoleTextAttribute(consolehwnd,FOREGROUND_INTENSITY|FOREGROUND_GREEN);printf("world!\n");getchar();SetConsoleTextAttribute(consolehwnd,BACKGROUND_INTENSITY|BACKGROUND_BLUE);printf("Itisreallybeautiful!\n");return 0;}
其他寫法
SetConsoleTextAttribute(handle,0x07);填十六進制數字,前面的數字代表背景色,後面的代表前景色。
SetConsoleTextAttribute(handle,7);直接接十進制數字。
具體見右圖。
套用舉例
FOREGROUND_RED表示設定前景色為紅色,即字型的顏色為紅色;
FOREGROUND_INTENSITY 表示設定前景色為高亮顯示,FOREGROUND_GREEN表示綠色,兩個參數中間加“|”表示前景色為高亮綠色;
BACKGROUND_INTENSITY表示設定背景色為高亮顯示,BACKGROUND_BLUE表示背景色為藍色,BACKGROUND_INTENSITY |BACKGROUND_BLUE兩個參數就使背景色為高亮藍色。
要表示紅色字型,白色背景可以使用SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),BACKGROUND_INTENSITY |FOREGROUND_INTENSITY | FOREGROUND_RED|BACKGROUND_RED | BACKGROUND_GREEN | BACKGROUND_BLUE);
設定背景與字型都為高顯BACKGROUND_INTENSITY |FOREGROUND_INTENSITY,設定字型顏色為FOREGROUND_RED,背景顏色為BACKGROUND_RED | BACKGROUND_GREEN | BACKGROUND_BLUE。其實這裡把這些數值加起來就是二進制的,11111100,即十六進制0xFC。所以設定白體紅字字也可以寫成:
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),0xFC)。
其他顏色可照此類推:
White on Black:
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY
| FOREGROUND_RED | FOREGROUND_GREEN | FOREGROUND_BLUE);
Red on Black:
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY
|FOREGROUND_RED);
Green on Black:
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY
| FOREGROUND_GREEN);
Yellow on Black:
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY
|FOREGROUND_RED | FOREGROUND_GREEN);
Blue on Black:
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY
|FOREGROUND_BLUE);
Magenta on Black:
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY
|FOREGROUND_RED | FOREGROUND_BLUE);
Cyan on Black:
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY
|FOREGROUND_GREEN | FOREGROUND_BLUE);
Black on White:
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),BACKGROUND_INTENSITY
|FOREGROUND_INTENSITY | BACKGROUND_RED | BACKGROUND_GREEN | BACKGROUND_BLUE);
Red on White:
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),BACKGROUND_INTENSITY
|FOREGROUND_INTENSITY | BACKGROUND_RED | BACKGROUND_GREEN | BACKGROUND_BLUE
|FOREGROUND_RED);
注意:使用SetConsoleTextAttribute函式一定要加上windows.h。