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 ...
随机推荐
- MarkdownPan2 简单使用指南
markdown 简单使用指南 一级标题 二级标题 三级标题加代码 四级标题 这里是加粗 这里是正文and English 888 这里有正文嵌入代码这种样式 这里是代码块 这种使用的代码块 还有引用 ...
- 理解UDP协议的首部校验和校验和
reference: https://blog.csdn.net/qiuchangyong/article/details/79945630 https://seanwangjs.github.io/ ...
- C# 遍历所有的子控件和孙控件,包括容器中的,并批量操作和调用
这里要用两个知识,一个是递归,一个是队列. //定义一个Control类型的队列allCtrls private static Queue <Control> allCtrls = new ...
- Linux文件打包与解压缩
一.文件打包和解压缩 常用的压缩包文件格式.在 Windows 上我们最常见的不外乎这三种*.zip,*.rar,*.7z后缀的压缩文件,而在 Linux 上面常见常用的除了以上这三种外,还有*.gz ...
- 信息技术手册可视化进度报告 基于BeautifulSoup框架的python3爬取数据并连接保存到MySQL数据库
老师给我们提供了一个word文档,里面是一份信息行业热词解释手册,要求我们把里面的文字存进数据库里面,然后在前台展示出来. 首先面临的问题是怎么把数据导进MySQL数据库,大家都有自己的方法,我采用了 ...
- reinterpret_cast
reinterpret_cast强制类型转换符 用法: new_type a = reinterpret_cast <new_type> (value) 将value的值转成new_typ ...
- js优化总结
避免全局查找 在一个函数中会用到全局对象存储为局部变量来减少全局查找,因为访问局部变量的速度要比访问全局变量的速度更快些 function search() { //当我要使用当前页面地址和主机 ...
- Moya https配置方法
准备 iOS做https适配时对服务器是有一定要求的,服务端必须要是一个符合ATS(App Transport Security)要求的HTTPS.简单说要满足以下几个要求: 1.Transpor ...
- centos 6.5 安装 tomcat8 及性能优化_虚拟主机
Tomcat服务器是一个免费的开放源代码的Web应用服务器,属于轻量级应用服务器,在中小型系统和并发访问用户不是很多的场合下被普遍使用,是开发和调试JSP程序的首选. Tomcat和Nginx.Apa ...
- 马凯军201771010116《面向对象与程序设计Java》第十六周知识学习总结
一:理论知识部分 1.线程的概念: 程序是一段静态的代码,它是应用程序执行的蓝 本. ‐进程是程序的一次动态执行,它对应了从代码加 载.执行至执行完毕的一个完整过程. 多线程是进程执行过程中产生的多条 ...