平常我們再寫程式的時候,整天面對著黑底白字的螢幕,感覺很鬱悶吧?

很多人想用conio.h/graphics.h中的一些函數來實現顯示色彩,卻發現 DEV C++/

VC++ 根本沒有這些文件。(conio.h/graphics.h是Borland TC/BC專有的文件)

其實 DEV C++/VC++ 也有相關的函式來實現cinsole彩色本文及背景的顯示。

你只需先宣告兩個函式,下面說明一下這兩個函數聲明其參數的涵義。

1. GetHandle()

   HANDLE GetStdHandle(DWORD nStdHandle);

//傳回標準的輸入、輸出或錯誤的設備的句柄,也就是獲得輸入、輸出或錯誤的
  緩衝區的句柄

    其參數nStdHandle的值為下面幾種類型的一種:

            值                         涵義
    ==============================================
       STD_UNPUT_HANDLE        標準輸入的句柄
       STD_OUTPUT_HANDLE       標準輸入的句柄
       STD_ERROR_HANDLE        標準錯誤的句柄


2. SetConsoleTextAttribute()

 BOOL SetConsoleTextAttribute(HANDLE hConsoleOutput,WORD wAttributes);

//其作用是在console程式設置輸入或輸出文本的文本顏色和背景顏色。
  只有在此函數設置后才能顯示彩色的文本。
//如果函數設置文本及背景顏色成功,則返回非零;如失敗返回零。

    其參數涵義如下:

    hConsoleOutput ------------ console 屏幕緩衝區的句柄。
    WORD wAttributes ---------- 文本及背景的顏色。


下面,我們就寫一個類似TC下settextcolor相似功能的函數 SetColor(),不過下面的
函數可以同時設置背景顏色,

函數的實現如下:

   void SetColor(unsigned short ForeColor,unsigned short BackGroundColor)
   {
       HANDLE hCon = GetStdHandle(STD_OUTPUT_HANDLE);
       //獲得緩衝區句柄
       SetConsoleTextAttribute(hCon,ForeColor|BackGroundColor);
       //設置文本及背景顏色
   };

有了上面的函數我們就可以實現彩色文本和背景了,給自己的程序一個與眾不同的輸出和提
示。

下面我們來實現一個彩色的 Hello World!。程序如下:

#include<windows.h> //GetStdHandle和SetConsoleTextAttribute在 windows.h 中
#include<iostream>

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!"<<endl;
    SetColor(40,30);
    std::cout<<"Hello world!"<<endl;

    return 0;
}

這樣一個彩色的Hello world!程式就寫好了。
當然,你可以用這個函數讓在你的程序在適當的地方顯示一些特殊的輸出或提示信息,這樣
你的程式就"與眾不同"了

arrow
arrow
    全站熱搜
    創作者介紹
    創作者 creteken 的頭像
    creteken

    creteken's 隨手記事本

    creteken 發表在 痞客邦 留言(0) 人氣()