dedecms织梦内容管理系统    
首页 | java | C/C++ | PHP | 操作系统 | ajax | 脚本编程 | 安全技术 | 本站下载页 | flex | CRM | 专题 | QQ群 | 测试中心 | 会员中心 | 积分规则
  当前位置:主页>C/C++>C/C++技术资料>文章内容
用VC++实现console程序显示彩色文本
来源:CSDN     作者:    
  用vc++写console程序时,整天对着黑纸白字的屏幕,感觉很郁闷吧?很多人想用CONIO.H/GRAPHICS.H中的一些函数来实现,却发现VC++根本没有这些头文件。当然了CONIO.H/GRAPHICS.H是BORLAND TC/BC专有的头文件,所以vc++中根本没有这些文件。把这两个头文件COPY过来,然后用??答案当然是否定的。其实VC++中也有相关的来实现console彩色文本及背景的显示。下面我们就看看V如何实现彩色文本。

  在v用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 <windows.h>
//GetStdHandle和SetConsoleTextAttribute在头文件windows.h中
#include <iostream>
using namespace std;

void SetColor(unsigned short ForeColor=3,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!程序就写好了。

  当然,你可以用这个让在你的程序在适当的地方显示一些特殊的输出或提示信息,这样你的程序就“与众不同”了。

 

 

上一篇:C++中的fstream类用于文件的I/O操作   下一篇:用自删除dll实现应用程序的安装/卸载代码
[收藏] [推荐] [评论(0条)] [返回顶部] [打印本页] [关闭窗口]  
用户名: 新注册) 密码: 匿名评论
评论内容:(不能超过250字,需审核后才会公布,请自觉遵守互联网相关政策法规。
 §最新评论
  热点文章
·C语言数组排序小结
·Python 与 C++ 程序的简单实例对
·c++ 数组与指针
·C++中的内存管理(new、delete、
·如何用C语言开发DSP嵌入式系统
·如何用C语言开发DSP嵌入式系统
·Linux下C语言编程
·学习arm的话先看哪本书?
·C++初学者应该关心的优秀图书一
·利用C语言小程序来解决大问题
·用C语言写PHP扩展的步骤
·用C语言扩展PHP功能
  相关文章
·用自删除dll实现应用程序的安装/
·C++中的fstream类用于文件的I/O
·数据库综合开发实践
·在VC++6.0开发中实现全屏显示
·如何创建有模式对话框
·如何改变MFC默认文档操作方式
·熟悉标准库
·Visual C++窗口标题改变的几种方
·谈新手对CString的使用
·MFC应用程序框架入门
·Toolbar制作菜单条过程详解
·利用VC编程在界面上实现3D文字
  相关信息
copy right @ 百家拳软件项目研究室 2007 辽ICP备07011763