SetConsoleTextAttribute

SetConsoleTextAttribute

SetConsoleTextAttribute是一個可以在API(應用程式編程接口)中設定控制台視窗字型顏色和背景色的計算機函式,該函式被廣泛套用於電腦編程與軟體開發中。

基本介紹

  • 外文名: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
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。

相關詞條

熱門詞條

聯絡我們