C/C++ 控制台字体的变颜变色
先扔一个链接上来,因为怕忘:
https://blog.csdn.net/stude/article/details/7645056
https://blog.csdn.net/lindorx/article/details/78760610
以下才是代码。
做了一个控制台进度条,并显示百分比。
UPDATE: 添加定向修改字符的备忘。19.3.21 18:20
#include <iostream>
#include <windows.h>
#include <random>
#include <time.h>
#include <string> #define COLOR_WHITE 0x0F
//#define COLOR_GREEN 0x0A #define PROCESS_SIGN ">"
#define PROCESS_SPEED 6
#define PROCESS_MAX 100
#define PROCESS_RATE 9 //MAX IS 10 static std::mt19937_64 randnum;
static CONSOLE_SCREEN_BUFFER_INFO csbi;
static HANDLE hstdout; int RandNum(int min, int max)
{
if (min < )
{
std::cout << "RandNum Function Parameter Error: The min is wrong number! " << std::endl;
return -;
} if (min >= max)
{
std::cout << "RandNum Function Parameter Error: The min and max are wrong numbers! " << std::endl;
return -;
} uint64_t tmpNum = randnum();
return tmpNum % (max - min) + min;
} int PrintWith_(const char* const str, int count, WORD color = COLOR_WHITE)
{
int ret = ; SetConsoleTextAttribute(hstdout, color);
for (int i = ; i < count; i++)
{
ret += printf(str);
}
SetConsoleTextAttribute(hstdout, COLOR_WHITE); return ret;
} void Backspace(int count)
{
PrintWith_("\b", count);
} bool Init()
{
if (PROCESS_RATE > )
{
return false;
} if (PROCESS_SPEED > PROCESS_MAX)
{
return false;
} hstdout = GetStdHandle(STD_OUTPUT_HANDLE);
GetConsoleScreenBufferInfo(hstdout, &csbi); randnum.seed(GetCurrentTime()); return true;
} int main()
{
if (!Init())
{
std::cout << "Config Error!" << std::endl; ExitProcess();
return ;
} int percent = ;
int spc = ;
while (percent < )
{
int inc = RandNum(, PROCESS_SPEED);
percent += inc;
if (percent > PROCESS_MAX)
{
inc = percent - PROCESS_MAX;
percent = PROCESS_MAX;
} Backspace(spc); PrintWith_(PROCESS_SIGN, inc, FOREGROUND_INTENSITY); char percentText[];
sprintf_s(percentText, " %d%%%%", percent);
spc = PrintWith_(percentText, , FOREGROUND_GREEN); Sleep(( - PROCESS_RATE) * );
} ////TEST:
//COORD pos = { 34, 10 };
//DWORD dWrited = 0;
//FillConsoleOutputCharacter(hstdout, '*', 5, pos, &dWrited);
//FillConsoleOutputAttribute(hstdout, FOREGROUND_BLUE, 3, pos, &dWrited);
//WriteConsoleOutputCharacter(hstdout, "■", 2, pos, &dWrited); std::cout << std::endl;
system("pause"); CloseHandle(hstdout); return ;
}
C/C++ 控制台字体的变颜变色的更多相关文章
- pycharm 控制台字体背景颜色设定让你美到爆
还在为你控制台字体颜色不入眼而发愁吗? 在某些特殊时刻想要改变下字体的颜色却无从下手而发愁吗? 那你就进来看一看,瞧一瞧,之需看2分钟,花2分钟理解,花3分钟练练手就能让你的控制能字体炫酷起来! 一. ...
- psfstriptable - 从控制台字体中移走嵌入的Uniocde字符表
总览 psfstriptable 字体文件 [输出文件] 描述 psfstriptable 命令从 字体文件 或者标准输入(此时的 字体文件 是单个破折号(-))读取一个可能含有嵌入Unicode字体 ...
- psfgettable - 从控制台字体中提取出嵌入的Unicode字符表
总览 psfgettable 字体文件 [输出文件] 描述 psfgettable 命令从一个 .psf 格式的控制台字体中提取出嵌入的 Unicode字符表, 以易读格式输入到一个ASCII文件, ...
- psfaddtable - 添加一个Unicode字符表到控制台字体中
总览 psfaddtable 字体文件 表文件 [输出文件] 描述 Psfaddtable 命令融合了 字体文件 提供的 .psf 格式的控制台字体和 表文件 提供的Unicode字符表, 生成一个带 ...
- python之设置控制台字体颜色
# 设置控制台输出字体颜色 # 格式:\033[显示方式;前景色;背景色m # 采用终端默认设置:\033[0m # 红色字体 print('\033[1;31m') print('*' * 10) ...
- 修改 cmd 控制台字体、巧用 FontLink 使中英文独立设置
众所周知,Windows 中 cmd 控制台窗口的字体难看,但是修改注册表是可以实现修改其字体的,但很多很棒的编程字体是没有中文的,所以在显示中文时直接调用了宋体,这绝妙的反差实在是 不忍直视.但是, ...
- 控制台字体怎么改为console?
windows控制台窗口在中文版下没有console字体,如果要使用console的话就必须先将窗口转换为英文版. 1.win+R进入运行窗口,然后cmd进入命令窗口 2.在命令行窗口输入 chcp ...
- 改变Ubuntu控制台字体大小(转)
输入 sudo dpkg-reconfigure console-setup 选择一个适合的字体和字号即可. 参考: http://www.codeweblog.com/%E6%94%B9%E5%8F ...
- Eclipse修改控制台字体
步骤:Window-->Preference-->General-->Appearance-->Colors and Fonts-->Basic-->Text Fo ...
随机推荐
- java算法02 - 树
树是一类重要的非线性结构.而二叉树是一种比较重要的树,接下来我们来了解二叉树的相关内容. 二叉搜索树:每个节点都不比它左子树的任意元素小,而且不比它的右子树的任意元素大. /** * 二叉搜索树 O( ...
- 关于ijkplayer下载的demo不能运行,这是因为FFmpeg
前提是你在Mac上已经配置了 homebrew 包管理工具 关于ijkPlayer的demo和framework的使用,也许当直接下载下来不能使用,这时候你需要再你下载的当前目录下运行,你看下自己的目 ...
- 使用datepicker和uploadify的冲突解决(IE双击才能打开附件上传对话框)
在开发的过程当中,IE的兼容无疑是我们的一块绊脚石,在我们使用的如期的datepicker插件和使用上传附件的uploadify插件的时候,两者就产生冲突,只要点击过时间的插件,uploadify上传 ...
- python基础(数组)
列表 也叫list 列表 数组 stus = ['明明','莉莉','亮亮'] 新增元素: Append,insert Append 在列表末尾加一个元素 Insert()在指定位置上增加一个元素 删 ...
- Qt 快捷键
- Swing学习2——图标添加Icon接口使用
废话没有,看代码. 主要就是通过实现Icon接口在标签添加一个圆形图标,并在框架中显示. package com.sword.swing_test; import javax.swing.*; imp ...
- ecside中<c:table>使用
<ec:table action="sjzc/tbWaterproject!list.do" items="objList" var="tbWa ...
- filter以及reduce的用法
简单的写了就几个例子 # 删掉偶数 li = [1,2,3,4,5,6,7,8,9,10] print(list(filter( lambda x : not x % 2 ==0 ,li))) #保留 ...
- redis cluster最简配置
redis cluster最简配置 master配置如下:(默认6379端口) bind 127.0.0.1 port 6379 timeout 0 databases 16 Master的redis ...
- failed to start process with commandline '%LAUNCHER_PATH% %LAUNCHER_ARGS%', ErrorCode = '0x80070002
在dotnet core进行开发的时候,需要开发目录直接iis进行部署,然而启动的时候,报异常,我们查看windows下的应用日志发现有个这样的错误信息 Application 'MACHINE/WE ...