C/C++ 控制台演示彩色输出进度

    

#include <stdio.h>  
#include <windows.h>  

BOOL SetConsoleColor(WORD wAttributes); 

int main()  
{  
    SetConsoleColor(FOREGROUND_RED | FOREGROUND_INTENSITY);

    const int NUM  = 50;//任务完成总量  

    for (int i = 0; i < NUM; i++)  
    {  
        //用Sleep()来代替一些费时的操作,如读写文件,大量的运算。  
        Sleep(1000); //some work to do  
        //输出百分比  
        printf("%.2lf%%
", i * 100.0/ NUM);  
    }  
    return 0;  
}  


BOOL SetConsoleColor(WORD wAttributes)  
{  
    HANDLE hConsole = GetStdHandle(STD_OUTPUT_HANDLE);  
    if (hConsole == INVALID_HANDLE_VALUE)  
        return FALSE;  

    return SetConsoleTextAttribute(hConsole, wAttributes);  
} 

  

  

  知识点:

  1)    它是转义字符中的回车符,准确的讲应该是回到本行开始处。

  2) 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的设备句柄,第二个参数用来设备设备的属性,这里详细介绍下表示颜色的参数。

    

   文字颜色使用如下组合:

   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.高亮颜色

   背景颜色使用如下组合:

   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表示。

 

原文地址:https://www.cnblogs.com/MakeView660/p/6533944.html