欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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

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

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

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

SetConsoleTextAttribute(
 _In_ HANDLE hConsoleOutput,
 _In_ WORD wAttributes
 );

HANDLE在上一篇博客中我們見過。注意在使用前,要先將其變?yōu)闃藴瘦敵鼍浔?/p>

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

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

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

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

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

我們看到不僅我們輸出的字符"R"變成了藍色,且后面的自動彈出的提示也變成了藍色。
我們可以把輸出字符的命令當作是一支畫筆,而我們通過SetConsoleTextAttribute();改變了畫筆的顏色。//這里提醒一下,直到下次更改前顏色會一直保持
而且我們可以看到,本來應(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ù)是對一些十六位進制的值的宏定義。//0x代表這后面的數(shù)字是十六位進制
而且根據(jù)宏定義名可簡單的歸類:
前四個是對字體的 藍色,綠色,紅色,亮度 進行設(shè)置
后四個是對背景的 藍色,綠色,紅色,亮度 進行設(shè)置

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

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

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

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

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

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

相關(guān)文章

  • C語言詳細圖解浮點型數(shù)據(jù)的存儲實現(xiàn)

    C語言詳細圖解浮點型數(shù)據(jù)的存儲實現(xiàn)

    使用編程語言進行編程時,需要用到各種變量來存儲各種信息。變量保留的是它所存儲的值的內(nèi)存位置。這意味著,當您創(chuàng)建一個變量時,就會在內(nèi)存中保留一些空間。您可能需要存儲各種數(shù)據(jù)類型的信息,操作系統(tǒng)會根據(jù)變量的數(shù)據(jù)類型,來分配內(nèi)存和決定在保留內(nèi)存中存儲什么
    2022-05-05
  • 淺談C++基類的析構(gòu)函數(shù)為虛函數(shù)

    淺談C++基類的析構(gòu)函數(shù)為虛函數(shù)

    本文重點:應(yīng)該為多態(tài)基類聲明虛析構(gòu)器。一旦一個類包含虛函數(shù),它就應(yīng)該包含一個虛析構(gòu)器。如果一個類不用作基類或者不需具有多態(tài)性,便不應(yīng)該為它聲明虛析構(gòu)器。
    2015-10-10
  • c++實現(xiàn)超簡單的貪吃蛇游戲?qū)嵗榻B

    c++實現(xiàn)超簡單的貪吃蛇游戲?qū)嵗榻B

    大家好,本篇文章主要講的是c++實現(xiàn)超簡單的貪吃蛇游戲?qū)嵗榻B,感興趣的同學(xué)趕快來看一看吧,對你有幫助的話記得收藏一下,方便下次瀏覽
    2021-12-12
  • 解析C++中派生的概念以及派生類成員的訪問屬性

    解析C++中派生的概念以及派生類成員的訪問屬性

    這篇文章主要介紹了解析C++中派生的概念以及派生類成員的訪問屬性,是C++入門學(xué)習(xí)中的基礎(chǔ)知識,需要的朋友可以參考下
    2015-09-09
  • C/C++中for語句循環(huán)用法以及練習(xí)舉例

    C/C++中for語句循環(huán)用法以及練習(xí)舉例

    for語句是一種循環(huán)語句,它是對while語句的推廣,下面這篇文章主要給大家介紹了關(guān)于C/C++中for語句循環(huán)用法以及練習(xí)舉例的相關(guān)資料,文中通過實例代碼介紹的非常詳細,需要的朋友可以參考下
    2023-03-03
  • C++?requires關(guān)鍵字簡單介紹

    C++?requires關(guān)鍵字簡單介紹

    requires?是?C++20?中引入的一個新關(guān)鍵字,用于在函數(shù)模板或類模板中聲明所需的一組語義要求,它可以用來限制模板參數(shù),類似于?typename?和?class?關(guān)鍵字,這篇文章主要介紹了C++?requires關(guān)鍵字簡介,需要的朋友可以參考下
    2023-05-05
  • OpenCV實現(xiàn)物體的凸包檢測的示例代碼

    OpenCV實現(xiàn)物體的凸包檢測的示例代碼

    給定二維平面上的點集,凸包就是將最外層的點連接起來構(gòu)成的凸邊形,它是包含點集中所有的點。本文將利用OpenCV實現(xiàn)物體的凸包檢測,感興趣的可以了解一下
    2022-08-08
  • C++發(fā)送郵件實現(xiàn)代碼

    C++發(fā)送郵件實現(xiàn)代碼

    這篇文章主要為大家詳細介紹了C++發(fā)送郵件的實現(xiàn)代碼,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-05-05
  • 聊一聊OpenCV相機標定

    聊一聊OpenCV相機標定

    這篇文章主要為大家詳細介紹了OpenCV相機標定的相關(guān)資料,即獲得相機參數(shù)的過程,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-01-01
  • 解析C++多文件編程問題

    解析C++多文件編程問題

    在某些場景中,考慮到編譯效率和可移植性,#pragma once 和 #ifndef 經(jīng)常被結(jié)合使用來避免頭文件被 重復(fù)引入,這里介紹用 _Pragma 操作符避免頭文件重復(fù)引入的問題,感興趣的朋友跟隨小編一起看看吧
    2021-10-10

最新評論