用vc++寫console程序時,整天對著黑紙白字的屏幕,感覺很郁悶吧?很多人想用CONIO.H/GRAPHICS.H中的一些函數來實現,卻發現VC++根本沒有這些頭文件。當然了CONIO.H/GRAPHICS.H是BORLAND TC/BC專有的頭文件,所以vc++中根本沒有這些文件。把這兩個頭文件COPY過來,然後用??答案當然是否定的。其實VC++中也有相關的函數來實現console彩色文本及背景的顯示。下面我們就看看VC++如何實現彩色文本。
在vc++用API函數GetStdHandle()和SetConsoleTextAttribute()來實現彩色背景及彩色文本。下面說一下這兩個函數聲明及其參數的含義。首先說GetStdHandle(),其聲明如下
HANDLE GetStdHandle(
DWORD nStdHandle
);
GetStdHandle()返回標准的輸入、輸出或錯誤的設備的句柄,也就是獲得輸入、輸出/錯誤的屏幕緩沖區的句柄。 其參數nStdHandle的值爲下面幾種類型的一種:
值含義
STD_INPUT_HANDLE 標准輸入的句柄
STD_OUTPUT_HANDLE 標准輸出的句柄
STD_ERROR_HANDLE 標准錯誤的句柄
函數SetConsoleTextAttribute()的作用是在console程序設置輸入或輸出文本的文本顔色和背景顔色。只有在此函數設置後才能顯示彩色的文本。其函數原型爲:
BOOL SetConsoleTextAttribute(
HANDLE hConsoleOutput, // console 屏幕緩沖區的句柄
WORD wAttributes // 文本及背景的顔色
);
如果函數設置文本及背景顔色成功,則返回非零;如失敗返回零。其參數含義如下:
hConsoleOutput------------- console 屏幕緩沖區的句柄。
WORD wAttributes-----------文本及背景的顔色。
其文本與背景顔色可以是 FOREGROUND_BLUE, FOREGROUND_GREEN, FOREGROUND_RED, FOREGROUND_INTENSITY, BACKGROUND_BLUE, BACKGROUND_GREEN, BACKGROUND_RED, and BACKGROUND_INTENSITY.和用這幾種顔色組合成的任意一種顔色(這一點有點類似于RGB)至于如何組合,我不知道 。
下面,我們就來寫一個類似又TC下settextcolor相似功能的函數SetColor(),不過下面的函數可以同時設置背景顔色,函數的實現如下:
void SetColor(unsigned short ForeColor,unsigned short BackGroundColor)
{
HANDLE hCon = GetStdHandle(STD_OUTPUT_HANDLE);
//獲得緩沖區句柄
SetConsoleTextAttribute(hCon,ForeColorBackGroundColor);
//設置文本及背景顔色
};
有了上面的函數我們就可以實現彩色文本和背景了,給自己的程序一個與衆不同的輸出和提示。下面我們來實現一個彩色的Hello World!。程序如下:
#include
//GetStdHandle和SetConsoleTextAttribute在頭文件windows.h中
#include
using namespace std;
void SetColor(unsigned short ForeColor=4,unsigned short BackGroundColor=0)
//給參數默認值,使它
//可以接受0/1/2個參數
{
HANDLE hCon = GetStdHandle(STD_OUTPUT_HANDLE); //本例以輸出爲例
SetConsoleTextAttribute(hCon,ForeColorBackGroundColor);
};
int main()
{
SetColor();
std::cout<<"Hello world!"< SetColor(40,30);
std::cout<<"Hello world!"< return 0;
}
這樣一個彩色的Hello world!程序就寫好了。
當然,你可以用這個函數讓在你的程序在適當的地方顯示一些特殊的輸出或提示信息,這樣你的程序就「與衆不同」了。
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
用vc++寫console程序時,整天對著黑紙白字的屏幕,感覺很郁悶吧?很多人想用CONIO.H/GRAPHICS.H中的一些函數來實現,卻發現VC++根本沒有這些頭文件。當然了CONIO.H/GRAPHICS.H是BORLAND TC/BC專有的頭文件,所以vc++中根本沒有這些文件。把這兩個頭文件COPY過來,然後用??答案當然是否定的。其實VC++中也有相關的函數來實現console彩色文本及背景的顯示。下面我們就看看VC++如何實現彩色文本。
在vc++用API函數GetStdHandle()和SetConsoleTextAttribute()來實現彩色背景及彩色文本。下面說一下這兩個函數聲明及其參數的含義。首先說GetStdHandle(),其聲明如下
HANDLE GetStdHandle(
DWORD nStdHandle
);
GetStdHandle()返回標准的輸入、輸出或錯誤的設備的句柄,也就是獲得輸入、輸出/錯誤的屏幕緩沖區的句柄。 其參數nStdHandle的值爲下面幾種類型的一種:
值 含義
STD_INPUT_HANDLE 標准輸入的句柄
STD_OUTPUT_HANDLE 標准輸出的句柄
STD_ERROR_HANDLE 標准錯誤的句柄
函數SetConsoleTextAttribute()的作用是在console程序設置輸入或輸出文本的文本顔色和背景顔色。只有在此函數設置後才能顯示彩色的文本。其函數原型爲:
BOOL SetConsoleTextAttribute(
HANDLE hConsoleOutput, // console 屏幕緩沖區的句柄
WORD wAttributes // 文本及背景的顔色
);
如果函數設置文本及背景顔色成功,則返回非零;如失敗返回零。其參數含義如下:
hConsoleOutput------------- console 屏幕緩沖區的句柄。
WORD wAttributes-----------文本及背景的顔色。
其文本與背景顔色可以是 FOREGROUND_BLUE, FOREGROUND_GREEN, FOREGROUND_RED, FOREGROUND_INTENSITY, BACKGROUND_BLUE, BACKGROUND_GREEN, BACKGROUND_RED, and BACKGROUND_INTENSITY.和用這幾種顔色組合成的任意一種顔色(這一點有點類似于RGB)至于如何組合,我不知道 。
下面,我們就來寫一個類似又TC下settextcolor相似功能的函數SetColor(),不過下面的函數可以同時設置背景顔色,函數的實現如下:
void SetColor(unsigned short ForeColor,unsigned short BackGroundColor)
{
HANDLE hCon = GetStdHandle(STD_OUTPUT_HANDLE);
//獲得緩沖區句柄
SetConsoleTextAttribute(hCon,ForeColor BackGroundColor);
//設置文本及背景顔色
};
有了上面的函數我們就可以實現彩色文本和背景了,給自己的程序一個與衆不同的輸出和提示。下面我們來實現一個彩色的Hello World!。程序如下:
#include
//GetStdHandle和SetConsoleTextAttribute在頭文件windows.h中
#include
using namespace std;
void SetColor(unsigned short ForeColor=4,unsigned short BackGroundColor=0)
//給參數默認值,使它
//可以接受0/1/2個參數
{
HANDLE hCon = GetStdHandle(STD_OUTPUT_HANDLE); //本例以輸出爲例
SetConsoleTextAttribute(hCon,ForeColor BackGroundColor);
};
int main()
{
SetColor();
std::cout<<"Hello world!"< SetColor(40,30);
std::cout<<"Hello world!"< return 0;
}
這樣一個彩色的Hello world!程序就寫好了。
當然,你可以用這個函數讓在你的程序在適當的地方顯示一些特殊的輸出或提示信息,這樣你的程序就「與衆不同」了。