zoukankan      html  css  js  c++  java
  • 控制台颜色设置

    通常控制台都是白字黑底的,千篇一律不免单调。适当的在控制台中加入一些彩色可以让人耳目一新,本文介绍如何使用系统API接口去修改控制台的文字和背景颜色。

     

    主要用到如下二个函数:

    得到standard input, standard output, or standard error的设备句柄:

    HANDLE GetStdHandle(DWORD nStdHandle);

    参数有:STD_INPUT_HANDLE,STD_OUTPUT_HANDLE及STD_ERROR_HANDLE。传入STD_OUTPUT_HANDLE就可以得到控制台输出设备的句柄。

     

    设置控制台设备的属性

    BOOL SetConsoleTextAttribute( HANDLE hConsoleOutput,WORD wAttributes);

    第一个参数为控制台standard input, standard output, or standard error的设备句柄

    第二个参数用来设备设备的属性,这里详细介绍下表示颜色的参数。

     

    先看下颜色的种类:

    在XP系统 控制台一共有16种文字颜色,16种背景颜色,可以通过

    文字颜色 + 背景颜色 * 0x10 来设置控制台的颜色。

     

    已经定义好的颜色常量如下:

    文字颜色使用如下组合:

     FOREGROUND_BLUE      0x0001 // text color contains blue.

     FOREGROUND_GREEN     0x0002 // text color contains green.

     FOREGROUND_RED       0x0004 // text color contains red.

     FOREGROUND_INTENSITY 0x0008 // text color is intensified.高亮颜色

    背景颜色使用如下组合(其实就是上面值*0x10):

    BACKGROUND_BLUE      0x0010 // background color contains blue.

     BACKGROUND_GREEN    0x0020 // background color contains green.

     BACKGROUND_RED       0x0040 // background color contains red.

     BACKGROUND_INTENSITY 0x0080 // background color is intensified.

    上面的颜色可以任意组合,如知道黄色可以由红色和绿色组成,所以可以用FOREGROUND_GREEN | FOREGROUND_RED来表示黄色的文字。

     

    默认情况下控制台的文字颜色是白色即用FOREGROUND_RED | FOREGROUND_GREEN | FOREGROUND_BLUE也可以直接用7表示,背景颜色为黑色即用0表示。

     

    下面是已经封装好的函数

    [cpp] view plain copy
     
    1. //一共有16种文字颜色,16种背景颜色,组合有256种。传入的值应当小于256  
    2. BOOL SetConsoleColor(WORD wAttributes)  
    3. {  
    4.     HANDLE hConsole = GetStdHandle(STD_OUTPUT_HANDLE);  
    5.     if (hConsole == INVALID_HANDLE_VALUE)  
    6.         return FALSE;  
    7.   
    8.     return SetConsoleTextAttribute(hConsole, wAttributes);  
    9. }  

    使用范例:

    [cpp] view plain copy
     
    1. int main()  
    2. {  
    3.     printf("控制台下默认文字背景颜色: ");  
    4.     printf("MoreWindows ");  
    5.     printf("----------------------------------- ");  
    6.   
    7.     SetConsoleColor(FOREGROUND_RED | FOREGROUND_INTENSITY | BACKGROUND_BLUE);  
    8.     printf("控制台下红字蓝底: ");  
    9.     printf("MoreWindows ");  
    10.     printf("----------------------------------- ");  
    11.   
    12.     SetConsoleColor(FOREGROUND_RED | FOREGROUND_GREEN | FOREGROUND_BLUE);   
    13.     printf("还原为控制台下默认文字背景颜色: ");  
    14.     printf("MoreWindows ");  
    15.     printf("----------------------------------- ");  
    16.     return 0;  
    17. }  

    输出结果如下:

     

    可以将本篇内容与VC 在控制台下显示进度 结合成来,完成一个随着任务完成百分比的增加,文字颜色不断变化的彩色进度显示。相信比单一的白色文字要美观的多。

     

    转载请标明出处,原文地址:http://write.blog.csdn.net/postedit/6789206

  • 相关阅读:
    阿里云SSL证书到期(续期)图文教程
    nginx: [error] open() "/var/run/nginx.pid" failed (2: No such file or directory)
    Mysql读写分离,主从同步实现
    MySQL Waiting for table metadata lock的解决方法
    MYSQL 版本5.7.24 sql_mode=only_full_group_by问题
    CentOS7下PHP7.2安装redis扩展
    每天写点python
    vim 编辑器的光标操作
    【linux使用】bash shell命令行常用快捷键 (转载)
    centos7 cannot find a valid baseurl for repo base (转载)
  • 原文地址:https://www.cnblogs.com/zsq1993/p/5998138.html
Copyright © 2011-2022 走看看