zoukankan      html  css  js  c++  java
  • [转]用VC++实现Console程序显示彩色文本

      用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 // 文本及背景的颜色
    );

      如果函数设置文本及背景颜色成功,则返回非零;如失败返回零。其文本与背景颜色可以是:

    FOREGROUND_BLUE 
    FOREGROUND_GREEN 
    FOREGROUND_RED 
    FOREGROUND_INTENSITY 
    BACKGROUND_BLUE 
    BACKGROUND_GREEN 
    BACKGROUND_RED 
    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!。程序如下:

    //GetStdHandle和SetConsoleTextAttribute在头文件windows.h中
    #include <iostream> 
    #include <windows.h>
    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!程序就写好了。

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

  • 相关阅读:
    Node.js:events事件模块
    Node.js:console模块
    Node.js:DNS模块的使用
    CSS3 Notes: -webkit-box-reflect实现倒影
    H5 Notes:PostMessage Cross-Origin Communication
    H5 Notes:Navigator Geolocation
    Notes:SVG(4)基于stroke-dasharray和stroke-dashoffset圆形进度条
    Notes:SVG(3)---滤镜和渐变
    如何写出优美的 C 代码 面向对象的 C
    Source Insight快捷键
  • 原文地址:https://www.cnblogs.com/wxxweb/p/2326368.html
Copyright © 2011-2022 走看看