最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

C/C++ 中怎樣使用SetConsoleTextAttribute()函數(shù)來控制輸出字符的顏色

 更新時(shí)間:2021年03月15日 08:42:23   作者:Ridiculer  
這篇文章主要介紹了C/C++ 中如何使用SetConsoleTextAttribute()函數(shù)來控制輸出字符的顏色,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下

當(dāng)我們在命令行輸出字符的時(shí)候,會(huì)想著,要是能控制輸出字符的顏色就好了。
現(xiàn)在,滿足你,有這么一個(gè)函數(shù)能夠幫助我們實(shí)現(xiàn)這個(gè)想法。
↓↓↓↓↓
SetConsoleTextAttribute();

依照慣例我們來看看這個(gè)函數(shù)的構(gòu)成。

SetConsoleTextAttribute(
 _In_ HANDLE hConsoleOutput,
 _In_ WORD wAttributes
 );

HANDLE在上一篇博客中我們見過。注意在使用前,要先將其變?yōu)闃?biāo)準(zhǔn)輸出句柄。

typedef void *HANDLE;//HANDLE是vodi*的重定義
HANDLE hOut = GetStdHandle(STD_OUTPUT_HANDLE);//獲取標(biāo)準(zhǔn)輸出句柄

現(xiàn)在我們主要來看一下WORD的定義。
typedef unsigned short WORD;

從上可以的除WORD其實(shí)是個(gè)無符號的整型,一般這樣的話,線索就好像是斷了,只看數(shù)值的話只能知道取值范圍是0-65535。
但是我們?nèi)ゾW(wǎng)上搜索這個(gè)函數(shù)后,我們就發(fā)現(xiàn)了簡單的用法,這里我來舉個(gè)例子:

#include <stdio.h>
#include <windows.h>

int main() {
	HANDLE hOut = GetStdHandle(STD_OUTPUT_HANDLE); // 獲取標(biāo)準(zhǔn)輸出句柄
	SetConsoleTextAttribute(hOut, FOREGROUND_INTENSITY | FOREGROUND_BLUE);//字體設(shè)置為藍(lán)色
	printf("R\n");
}

我們看到不僅我們輸出的字符"R"變成了藍(lán)色,且后面的自動(dòng)彈出的提示也變成了藍(lán)色。
我們可以把輸出字符的命令當(dāng)作是一支畫筆,而我們通過SetConsoleTextAttribute();改變了畫筆的顏色。//這里提醒一下,直到下次更改前顏色會(huì)一直保持
而且我們可以看到,本來應(yīng)該是填入WORD類型數(shù)據(jù)的地方,現(xiàn)在變成了"FOREGROUND_INTENSITY | FOREGROUND_BLUE"。
這是什么東西呢,我們對它查看定義來看一下:

#define FOREGROUND_BLUE  0x0001 // text color contains blue.
#define FOREGROUND_GREEN  0x0002 // text color contains green.
#define FOREGROUND_RED  0x0004 // text color contains red.
#define FOREGROUND_INTENSITY 0x0008 // text color is intensified.
#define BACKGROUND_BLUE  0x0010 // background color contains blue.
#define BACKGROUND_GREEN  0x0020 // background color contains green.
#define BACKGROUND_RED  0x0040 // background color contains red.
#define BACKGROUND_INTENSITY 0x0080 // background color is intensified.

從看到上的的注釋不難看出,這些函數(shù)是對一些十六位進(jìn)制的值的宏定義。//0x代表這后面的數(shù)字是十六位進(jìn)制
而且根據(jù)宏定義名可簡單的歸類:
前四個(gè)是對字體的 藍(lán)色,綠色,紅色,亮度 進(jìn)行設(shè)置
后四個(gè)是對背景的 藍(lán)色,綠色,紅色,亮度 進(jìn)行設(shè)置

相信機(jī)智的你已經(jīng)看出來了,SetConsoleTextAttribute(HANDLE,WORD);其實(shí)是通過判斷WORD的二進(jìn)制,其相對應(yīng)位置上的值來開啟顏色屬性的。
(short是二字節(jié),但是這里方便書寫就寫一字節(jié)了)

對應(yīng)屬性 藍(lán)色字體 綠色字體 紅色字體 高亮字體 藍(lán)色背景 綠色背景 紅色背景 高亮背景
十進(jìn)制 0x0001 0x0002 0x0004 0x0008 0x0010 0x0020 0x0040 0x0080
二進(jìn)制 00000001 00000010 00000100 00001000 00010000 00100000 01000000 10000000

上訴例子里的值也可以這么轉(zhuǎn)換下來:
" FOREGROUND_INTENSITY|FOREGROUND_BLUE "--->" 0x0008|0x0001 "--->" 00001000|00000001 "
--->"00001001"
然后根據(jù)"00001001"查看,哦,開啟第一位和第四位的屬性,那么也就是打開啟 藍(lán)色字體和高亮字體的屬性。
還有就是 這里的紅綠藍(lán)其實(shí)就是三原色,經(jīng)過通過 紅綠 紅藍(lán) 綠藍(lán) 還可得到 黃色 青色 粉色 這三種顏色。

//宏定義字體顏色
#define FOREGROUND_WHITE  0x0007 //白色(紅+綠+藍(lán)) 默認(rèn)顏色
#define FOREGROUND_YELLOW  0x0006 //黃色(紅+綠)
#define FOREGROUND_PINK  0x0005 //粉色(紅+藍(lán))
#define FOREGROUND_INDIGO  0x0003 //青色(綠+藍(lán))

這里我把混合的顏色寫上來,為了方便使用,可以在自己的代碼里添加這個(gè)宏定義方便使用

到此這篇關(guān)于C/C++ 中怎樣使用SetConsoleTextAttribute()函數(shù)來控制輸出字符的顏色的文章就介紹到這了,更多相關(guān)C/C++控制輸出字符的顏色內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • VC創(chuàng)建圓角dialog的實(shí)現(xiàn)方法

    VC創(chuàng)建圓角dialog的實(shí)現(xiàn)方法

    這篇文章主要介紹了VC創(chuàng)建圓角dialog的實(shí)現(xiàn)方法,結(jié)合實(shí)例形式分析了圓角dialog對話框的創(chuàng)建步驟與相關(guān)操作技巧,需要的朋友可以參考下
    2016-08-08
  • C++ 智能指針的模擬實(shí)現(xiàn)實(shí)例

    C++ 智能指針的模擬實(shí)現(xiàn)實(shí)例

    這篇文章主要介紹了C++ 智能指針的模擬實(shí)現(xiàn)實(shí)例的相關(guān)資料,智能指針是一個(gè)類,它把普通指針封裝起來,能實(shí)現(xiàn)和普通指針同樣的功能。,需要的朋友可以參考下
    2017-07-07
  • 帶你了解C++的數(shù)組與函數(shù)

    帶你了解C++的數(shù)組與函數(shù)

    這篇文章主要介紹了C++的數(shù)組與函數(shù),包括數(shù)組的初始化等基本知識,需要的朋友可以參考下,希望能給你帶來幫助
    2021-08-08
  • 構(gòu)建mfc窗體的簡單示例

    構(gòu)建mfc窗體的簡單示例

    這篇文章主要介紹了構(gòu)建mfc窗體的簡單示例,需要的朋友可以參考下
    2014-04-04
  • Qt實(shí)現(xiàn)Flappy Bird游戲

    Qt實(shí)現(xiàn)Flappy Bird游戲

    這篇文章主要為大家詳細(xì)介紹了Qt實(shí)現(xiàn)Flappy Bird游戲,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-12-12
  • C語言全面細(xì)致講解單雙精度float與double的使用方法

    C語言全面細(xì)致講解單雙精度float與double的使用方法

    C語言中小數(shù)的數(shù)據(jù)類型為 float 或 double:float 稱為單精度浮點(diǎn)數(shù),double 稱為雙精度浮點(diǎn)數(shù)。不像整數(shù),小數(shù)的長度始終是固定的,float 占用4個(gè)字節(jié),double 占用8個(gè)字節(jié)
    2022-05-05
  • 通過“回文字算法”復(fù)習(xí)C++語言

    通過“回文字算法”復(fù)習(xí)C++語言

    這篇文章主要介紹了通過“回文字算法”復(fù)習(xí)C++語言的相關(guān)資料,非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友可以參考下
    2016-10-10
  • 《C++ Primer》隱式類類型轉(zhuǎn)換學(xué)習(xí)整理

    《C++ Primer》隱式類類型轉(zhuǎn)換學(xué)習(xí)整理

    在本篇文章里小編給大家整理的是關(guān)于《C++ Primer》隱式類類型轉(zhuǎn)換學(xué)習(xí)筆記內(nèi)容,需要的朋友們參考下。
    2020-02-02
  • C++設(shè)計(jì)模式中控制反轉(zhuǎn)與依賴注入淺析

    C++設(shè)計(jì)模式中控制反轉(zhuǎn)與依賴注入淺析

    這篇文章主要介紹了C++設(shè)計(jì)模式中控制反轉(zhuǎn)與依賴注入,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)吧
    2023-01-01
  • 利用C語言實(shí)現(xiàn)三子棋游戲

    利用C語言實(shí)現(xiàn)三子棋游戲

    這篇文章主要為大家詳細(xì)介紹了利用C語言實(shí)現(xiàn)三子棋游戲,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-02-02

最新評論

隆尧县| 禄丰县| 读书| 墨玉县| 唐河县| 泸溪县| 昭苏县| 时尚| 临沂市| 江阴市| 临泽县| 丹寨县| 尉氏县| 安泽县| 桂林市| 阿巴嘎旗| 泾源县| 玉溪市| 锡林郭勒盟| 西宁市| 遵化市| 申扎县| 吴旗县| 广德县| 耿马| 文山县| 交口县| 甘德县| 井冈山市| 新营市| 东海县| 郯城县| 平昌县| 平罗县| 平陆县| 漠河县| 达孜县| 腾冲县| 新竹市| 上虞市| 长岭县|