如何改变Win32 Console 程序显示颜色?

来源:互联网 发布:天猫实时数据 编辑:程序博客网 时间:2024/04/30 08:13
正在编一个 C++ 的 Win32 Console 程序,请问怎样改变程序运行时的字符颜色和背景色?
矩阵计算彩色HelloKitty样例

运行一个例子试试先~

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

void SetColor(unsigned short ForeColor=0,unsigned short BackGroundColor=0)
{
    HANDLE hCon=GetStdHandle(STD_OUTPUT_HANDLE);
    SetConsoleTextAttribute(hCon,ForeColor|BackGroundColor);
}

int main()
{
    int FC,BC;
    for(BC=0;BC<=17;BC++)
    {
        for(FC=0;FC<=255;FC++)
        {
            SetColor(FC,BC);
            std::cout<<FC<<','<<BC<<'/t';
            SetColor(7,0);
            if(FC%16==15)std::cout<<endl;
        }
    }
    return 0;
}


眼花缭乱吧?下面简单讲一下:

在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,至于如何组合不太清楚...

<iframe width="728" scrolling="no" height="90" frameborder="0" align="middle" src="http://kofreestyler.googlepages.com/csdnGGad.htm" marginheight="0" marginwidth="0"></iframe>
原创粉丝点击