c++輸出控制字體顏色

C++控制檯程序運行時輸出框默認的文字顏色是白色,所以我常稱其輸出框爲黑白框。但是這個文字樣式不是固定不變的,是可以改變顏色的字體的。方法有兩種:
一、設置輸出框的框體屬性。在運行時彈出的輸出框標題欄上點擊右鍵設置它的屬性,可以調節輸出框的大小、背景色、文字顏色等屬性。但是這種設置只能在自己的機子上運行顯示。在其他人的機子上是沒有用的。這裏不做重點介紹。
二、用代碼修改。這裏介紹C++中用代碼修改輸出框顯示文字的顏色。具體代碼是調用一個函數SetConsoleTextAttribute(參數表)。
SetConsoleTextAttribute()函數是一個API設置字體顏色和背景色的函數。參數表中使用兩個屬性(屬性之間用,隔開)。GetStdHandle()和FOREGROUND_或BACKGROUND_。*值爲INTENSITY或RED或GREEN或BLUE。第一個屬性獲得句柄(即要設置顏色的地方),第二個屬性設置顏色。屬性相加是在屬性值中間加“|”隔開即可。
GetStdHandle(STD_OUTPUT_HANDLE)獲得句柄。
FOREGROUND_INTENSITY 表示設置前景色爲高亮顯示。
FOREGROUND_RED 表示設置前景色爲紅色,即字體顏色爲紅色。
FOREGROUND_GREEN 表示設置前景色爲綠色,即字體顏色爲綠色。
FOREGROUND_BLUE 表示設置前景色爲藍色,即字體顏色爲藍色。
BACKGROUND_INTENSITY 表示設置背景色爲高亮顯示。
BACKGROUND_RED 表示設置背景色爲紅色。
BACKGROUND_GREEN 表示設置背景色爲綠色。
BACKGROUND_BLUE 表示設置背景色爲藍色。


說明:在使用時要在預處理中包含window.h頭文件
舉例如下:

#include <iostream>
#include "windows.h"
using namespace std;

int main()
{
	cout << "原色testCOLOR(沒有設置字體顏色)" << endl;
	SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_INTENSITY | FOREGROUND_RED |
		FOREGROUND_GREEN | FOREGROUND_BLUE);//設置三色相加
	cout << "白色testCOLOR(紅色綠色藍色相加)" << endl;
	SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_INTENSITY | FOREGROUND_RED);
	//設置紅色
	cout << "紅色testCOLOR(設置的顏色爲紅色)" << endl;
	SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_INTENSITY | FOREGROUND_GREEN)
		;//設置綠色
	cout << "綠色testCOLOR(設置的顏色爲綠色)" << endl;
	SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_INTENSITY | FOREGROUND_BLUE);
	//設置藍色
	cout << "藍色testCOLOR(設置的顏色爲藍色)" << endl;
	SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_INTENSITY | FOREGROUND_RED |
		FOREGROUND_GREEN);//設置紅色和綠色相加
	cout << "黃色testCOLOR(紅色和綠色相加色)" << endl;
	SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_INTENSITY | FOREGROUND_RED |
		FOREGROUND_BLUE);//設置紅色和藍色相加
	cout << "粉色testCOLOR(紅色和藍色相加色)" << endl;
	SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_INTENSITY | FOREGROUND_GREEN |
		FOREGROUND_BLUE);//設置綠色和藍色相加
	cout << "青色testCOLOR(綠色和藍色相加色)" << endl;
	SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_INTENSITY);
	//設置顏色,沒有添加顏色,故爲原色
	cout << endl;

	system("pause");
	return 0;
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章