MFC读写.txt文件时进度条显示实时进度
整体实现方式:先获得文件长度,然后用每次读取的长度,计算出完成的百分比,用百分比的值设置进度条。
一、MFC进度条 Progress Control 相关函数
1. create() ——创建Progress Control
针对不是通过资源文件上拖拉进度条控件生成的进度条,需要用此函数创建一个。
2. SetRange() —— 设置进度条范围
设置进度条的起始值和终止值。(不管拖拽还是创建都要设置此,在初始化中)
3. SetPos() —— 设置当前值
设置进度条的当前位置(值)。
4. OffSetPos() —— 偏移一段位置
移动进度条一段距离(动态移动,如果不做延时,默认速度移动)
5. SetStep() —— 设置步长
设置进度条偏移一次的长度,一般与StepIt搭配使用
6. StepIt() —— 更新步长位置
按照步长来更新位置。
7.GetPos() —— 得到当前值
获得进度条当前值。
二、示例
1. 首先在初始化函数中设置范围和当前初始值
CProgressCtrl* pProg = (CProgressCtrl*)GetDlgItem(IDC_PROGRESS);
pProg->SetRange(0, 100);
pProg->SetPos(0);
2. 获取目标txt文件的总行数
while(!feof(fOpenFile)) {
if(fgets(szBuf, sizeof(szBuf) - 1, fOpenFile)) {
nRowOfTotalNum++;
}
}
nRowOfTotalNum++;
fseek(fOpenFile, 0, SEEK_SET);
这里,读取完总行数后,要将文件指针指向文件头。
3. 获取当前读取进度的行数,计算出完成的百分比,用百分比的值设置进度条。
fRowOfCurrentNum = nRowOfCurrentNum;
fRowOfTotalNum = nRowOfTotalNum;
fProPos = (fRowOfCurrentNum / fRowOfTotalNum) * 100.00;
nProPos = fProPos;
cProFileCtl.SetPos(nProPos);
PS:SetPos()只能接受int型变量,而计算后的进度又要使用Float类型进行保存计算,所以这里要特别注意各个变量之间计算时的类型转换问题,否则会一直出现Pos为0而进度条始终没有反应的情况。
最终即可完成读写.txt文件时进度条显示实时进度的功能。
MFC读写.txt文件时进度条显示实时进度的更多相关文章
- Python读写txt文件时的编码问题
这个问题来自于一个小伙伴,他在处理中文数据时需要先把里面的文本过滤然后分词,因为里面有许多符号,不仅是中文标点符号,还有✳,emoji等奇怪的符号. 正常情况下,中文的str经过encode('utf ...
- Extjs 使用fileupload插件上传文件 带进度条显示
一.首先我们看看官方给出的插件的解释: 一个文件上传表单项具有自定义的样式,并且可以控制按钮的文本和 像文本表单的空文本类似的其他特性. 它使用一个隐藏的文件输入元素,并在用户选择文件后 在form提 ...
- Ajax上传文件进度条显示
要实现进度条的显示,就要知道两个参数,上传的大小和总文件的大小 html5提供了一个上传过程事件,在上传过程中不断触发,然后用已上传的大 小/总大小,计算上传的百分比,然后用这个百分比控制div框的显 ...
- 【Winform】使用BackgroundWorker控制进度条显示进度
许多开发者看见一些软件有进度条显示进度,自己想弄,项目建好后发现并没有自己想象中的那么简单...看了网上很多教程后,写了一个小Demo供网友们参考~~,Demo的网址:http://pan.baidu ...
- 【Android】读取sdcard卡上的全部图片而且显示,读取的过程有进度条显示
尽管以下的app还没有做到快图浏览.ES文件浏览器的水平,遇到大sdcard还是会存在读取过久.内存溢出等问题,可是基本思想是这种. 例如以下图.在sdcard卡上有4张图片, 打开app,则会吧sd ...
- 超赞的CSS3进度条 可以随进度显示不同颜色
原文:超赞的CSS3进度条 可以随进度显示不同颜色 现在的WEB已经不是以前的WEB了,传输更大的数据量,有着更加复杂的计算,这就需要利用进度条来提高用户体验,必要时可以让用户耐心等待,不至于因操作卡 ...
- python操作txt文件中数据教程[1]-使用python读写txt文件
python操作txt文件中数据教程[1]-使用python读写txt文件 觉得有用的话,欢迎一起讨论相互学习~Follow Me 原始txt文件 程序实现后结果 程序实现 filename = '. ...
- Qt flash_eraseall nandwrite 进度条显示擦除、烧录
/***************************************************************************** * Qt flash_eraseall n ...
- UNICODE环境下读写txt文件操作
内容转载自http://blog.sina.com.cn/s/blog_5d2bad130100t0x9.html UNICODE环境下读写txt文件操作 (2011-07-26 17:40:05) ...
随机推荐
- wpf 实现印章,公章效果
能写一些特定外观的控件,是一个做界面开发的程序员的基础技能.基本上,不管你是做web,QT,MFC,Winform,WPF等等,如果自己看到一个比较好看的有趣的效果,能大致推断出它的实现方式并照猫画虎 ...
- 单例对象 (Singleton)设计模式
单例的目的是为了保证运行时Singleton类只有唯一的一个实例,用于一些较大开销的操作. 饿汉式(没有线程安全问题): ' 由于使用static关键字进行了修饰,只能获取到一个对象,从而达到了单例, ...
- 分数化循环小数C++实现
引言 前一阵做了一个有理数四则混合运算的程序(详见:用C++实现的有理数(分数)四则混合运算计算器),以分数形式呈现运算结果.这次添加以循环小数形式呈现运算结果的功能.例如: Please input ...
- idea控制台中文乱码解决办法
也可以通过idea右下角的设置,但是properties文件是不能设置的,这个只能在file->setting->file encodings 设置
- 快速排序(C++)
快速排序 快速排序是面试中经常问到的排序算法 基本思想:通过一趟排序将待排序记录分割成独立的两部分,其中一部分记录的关键字均比另一部分记录的关键字小, 则可分别对这两部分记录继续进行排序,以达到整个序 ...
- Java基础之SPI机制
SPI 机制,全称为 Service Provider Interface,是一种服务发现机制.它通过在 ClassPath 路径下的 META-INF/services 文件夹查找文件,自动加载文件 ...
- (二)Superset 1.3图表篇——Time-series Table
(二)Superset 1.3图表篇--Time-series Table 本系列文章基于Superset 1.3.0版本.1.3.0版本目前支持分布,趋势,地理等等类型共59张图表.本次1.3版本的 ...
- ubuntu下使用minicom
环境 宿主机平台:Ubuntu 16.04.6 目标机:iMX6ULL 安装及使用 首先时在Ubuntu里安装minicom sudo apt-get install minicom 接下来可以使用 ...
- Mysql常用sql语句(5)- as 设置别名
测试必备的Mysql常用sql语句系列 https://www.cnblogs.com/poloyy/category/1683347.html 需要注意,创建数据库和创建表的语句博文都在前面哦 整个 ...
- 运输层协议:TCP和UDP
运输层简介 运输层的通信实体不再是主机,而是主机中的进程.运输层的通信是一台主机的进程和另一台主机的进程进行数据交换. 运输层作用 运输层向上层的应用层提供通信服务 运输层为进程提供端到端的通信 运输 ...