用vc写console时整天对着黑纸白字屏幕感觉很郁闷吧?很多人想用CONIO.H/GRAPHICS.H中些来实现却发现VC根本没有这些头文件当然了CONIO.H/GRAPHICS.H是BORLAND TC/BC专有头文件所以vc中根本没有这些文件把这两个头文件COPY过来然后用??答案当然是否定其实VC中也有相关来实现console彩色文本及背景显示下面我们就看看VC如何实现彩色文本
在vc用APIGetStdHandle()和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下textcolor相似功能SetColor()不过下面可以同时设置背景颜色实现如下:
void SetColor(unsigned ForeColor,unsigned BackGroundColor)
{
HANDLE hCon = GetStdHandle(STD_OUTPUT_HANDLE);
//获得缓冲区句柄
SetConsoleTextAttribute(hCon,ForeColor BackGroundColor);
//设置文本及背景颜色
};
有了上面我们就可以实现彩色文本和背景了给自己个和众区别输出和提示下面我们来实现个彩色Hello World!如下:
#
//GetStdHandle和SetConsoleTextAttribute在头文件windows.h中
#
using std;
void SetColor(unsigned ForeColor=4,unsigned BackGroundColor=0)
//给参数默认值使它
//可以接受0/1/2个参数
{
HANDLE hCon = GetStdHandle(STD_OUTPUT_HANDLE); //本例以输出为例
SetConsoleTextAttribute(hCon,ForeColor BackGroundColor);
};
{
SetColor;
std::cout<<\"Hello world!\"< SetColor(40,30);
std::cout<<\"Hello world!\"< 0;
}
这样个彩色Hello world!就写好了
当然你可以用这个让在你在适当地方显示些特殊输出或提示信息这样你就“和众区别”了
资讯仅供参考不代表本站(GameRes.com)观点此信息由wxhwhmanshan提交
网友回复:
pklang 如何回事?我照着写有两百多个
ccor 转贴时特殊符号被屏蔽造成代码不完整
-----------------------
标题:用VC实现console显示彩色文本
出处:CSDN
作者:hcj2002
-----------------------
……
#<windows.h>
//GetStdHandle和SetConsoleTextAttribute在头文件windows.h中
#<iostream>
using std;
void SetColor(unsigned ForeColor=4,unsigned BackGroundColor=0)
//给参数默认值使它
//可以接受0/1/2个参数
{
HANDLE hCon = GetStdHandle(STD_OUTPUT_HANDLE); //本例以输出为例
SetConsoleTextAttribute(hCon,ForeColor|BackGroundColor);
};
{
SetColor;
std::cout<<\"Hello world!\"<<endl;
SetColor(40,30);
std::cout<<\"Hello world!\"<<endl;
0;
}
……
-----------------------
最新评论