VC 控制台顏色設定

2021-06-07 07:30:52 字數 1815 閱讀 6515

通常控制台都是白字黑底的,千篇一律不免單調。適當的在控制台中加入一些彩色可以讓人耳目一新,本文介紹如何使用系統api介面去修改控制台的文字和背景顏色。

主要用到如下二個函式:

得到standard input, standard output, or standard error的裝置控制代碼:

handle getstdhandle(dword nstdhandle);

引數有:std_input_handle,std_output_handle及std_error_handle。傳入std_output_handle就可以得到控制台輸出裝置的控制代碼。

設定控制台裝置的屬性

bool setconsoletextattribute( handle hconsoleoutput,word wattributes);

第乙個引數為控制台standard input, standard output, or standard error的裝置控制代碼

第二個引數用來裝置裝置的屬性,這裡詳細介紹下表示顏色的引數。

先看下顏色的種類:

在xp系統 控制台一共有16種文字顏色,16種背景顏色,可以通過

文字顏色 + 背景顏色 * 0x10 來設定控制台的顏色。

已經定義好的顏色常量如下:

文字顏色使用如下組合:

foreground_blue      0x0001 // text color contains blue.

foreground_green     0x0002 // text color contains green.

foreground_red       0x0004 // text color contains red.

foreground_intensity 0x0008 // text color is intensified.高亮顏色

背景顏色使用如下組合(其實就是上面值*0x10):

background_blue      0x0010 // background color contains blue.

background_green    0x0020 // background color contains green.

background_red       0x0040 // background color contains red.

background_intensity 0x0080 // background color is intensified.

上面的顏色可以任意組合,如知道黃色可以由紅色和綠色組成,所以可以用foreground_green | foreground_red來表示黃色的文字。

預設情況下控制台的文字顏色是白色即用foreground_red | foreground_green | foreground_blue也可以直接用7表示,背景顏色為黑色即用0表示。

下面是已經封裝好的函式

[cpp]view plain

copy

//一共有16種文字顏色,16種背景顏色,組合有256種。傳入的值應當小於256

bool

setconsolecolor(

word

wattributes)    

使用範例:

[cpp]view plain

copy

intmain()    

輸出結果如下:

可以將本篇內容與

vc 在控制台下顯示進度

結合成來,完成乙個隨著任務完成百分比的增加,文字顏色不斷變化的彩色進度顯示。相信比單一的白色文字要美觀的多。

VC控制台顏色設定

通常控制台都是白字黑底的,千篇一律不免單調。適當的在控制台中加入一些彩色可以讓人耳目一新,本文介紹如何使用系統api介面去修改控制台的文字和背景顏色。主要用到如下二個函式 得到standard input,standard output,or standard error的裝置控制代碼 handle...

VC 控制台顏色設定

分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!通常控制台都是白字黑底的,千篇一律不免單調。適當的在控制台中加入一些彩色可以讓人耳目一新,本文介紹如何使用系統api介面去修改控制台的文字和背景顏色。主要用到如下二個函式 得到standard input,standard output,or st...

C C 控制台顏色設定類

windows和linux都可用的乙個類.用來設定顏色,沒有太複雜。簡單夠用吧。ifdef win32 include class fontcolor void setcolor int ncolor void unsetcolor fontcolor private handle m hstdou...