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) ...
随机推荐
- nodejs根据word模板生成文档
这里使用的模块是 docx-templates,直接npm安装即可[方法二:https://www.cnblogs.com/vichang/p/10416449.html] 1,模板文件 +++QU ...
- RabitMq过期时间TTL
第一种:给消息设置过期时间 启动一个插件 @Bean public DirectExchange DirectExchange() { return new DirectExchange(" ...
- java js转码
public static String escape(String src) { int i; char j; StringBuffer tmp = new StringBuffer(); tmp. ...
- Ubuntu 16.04LTS下eclipse连接mysql
第一部分:打开eclipse,新建一个web工程,新建一个类db_test.java(jdbc连接mysql的原理自行百度) import java.sql.*; public class db_te ...
- SpringBoot笔记(3)
一.配置文件 1.文件类型 1.1.properties 同以前的properties用法 1.2.yaml 1.2.1.简介 YAML 是 "YAML Ain't Markup Langu ...
- BUUCTF-[极客大挑战 2019]BuyFlag
BUUCTF-[极客大挑战 2019]BuyFlag 进去一看,哦原来是某安全团队的招募启示. 但没看到什么有用的信息,看到了Q群号,我还以为是一道社工题(=_=) 来到pay.php 看一下源码,发 ...
- Redis-技术专区-让你彻底会使用“Redis中最陌生且最强大的集合”(ZSET)【前篇】
前言介绍 很多小伙伴都跟我说,redis中,ZSet(有序集合)是他们最陌生的集合,同时也是觉得特别复杂的集合之一,在开发过程中经常会用到它,而且也是大家最不太有把握使用的集合,所以笔者就从ZSet集 ...
- 新来的前端小姐姐问:Vue路由history模式刷新页面出现404问题
摘要:vue-router 默认 hash 模式 -- 使用 URL 的 hash 来模拟一个完整的 URL,于是当 URL 改变时,页面不会重新加载. 本文分享自华为云社区<学习Vue Rou ...
- Appium问题解决方案(9)- Original error: Failed to launch Appium Settings app: Condition unmet after 5090 ms
背景 执行代码报错 解决方法 该问题并不常见,主要是手机操作系统的问题 程序无法无法自动打开appiumsettings,那么我们可以手动打开appiumsettings服务(程序没有界面,会出现打开 ...
- dubbo 2.7应用级服务发现踩坑小记
本文已收录 https://github.com/lkxiaolou/lkxiaolou 欢迎star. 背景 本文记录最近一位读者反馈的dubbo 2.7.x中应用级服务发现的问题,关于dubbo应 ...