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) ...
随机推荐
- .Net 生成带注释的Nuget包
使用.NET Core时,我们的类库都要打包成nuget包上传到nuget服务器,以供自己或他人使用 .Net sdk提供了一个 .Net pack 命令可以生成nuget包.比如下面的命令 dotn ...
- 【springcloud alibaba】配置中心之nacos
接着上一篇的[springcloud alibaba]注册中心之nacos,这一篇主要讲nacos的配置中心能力.nacos的集群部署及持久化请看上一篇. ---------------------- ...
- nuxt.js服务端渲染中less的配置和使用
第一步:npm 安装 less 和 less-loader ,文件根目录下安装,指令如下 npm install less less-loader --save-dev 第二步:直接在组件中使用 &l ...
- C# 对SQlServer访问的完整类
using System; using System.Collections.Generic; using System.Collections.Specialized; using System.C ...
- 传统JIT和java9新特性AOT理解
java慢的原因 1. 除了少量基本类型用栈存储外,所有对象都使用堆存储.堆的性能低于栈. 2. 很多强制类型转换(cast)或加查,耗用内存大.java运行时对类型检测,如果类型不正确会抛出Cl ...
- freeswitch新增模块
概述 freeswitch的架构由稳定的核心模块和大量的外围插件式模块组成.核心模块保持稳定,外围模块可以动态的加载/卸载,非常灵活方便. 外围模块通过核心提供的 Public API与核心进行通信, ...
- 真实机中安装CentOS
前言 最近在b站上看了兄弟连老师的Linux教程,非常适合入门:https://www.bilibili.com/video/BV1mW411i7Qf 看完后就自己来试着玩下,正好手上有台空闲的电脑就 ...
- 怎样去除EXCEL中的重复行
工具/原料 安装了EXCEL2010的电脑一台 步骤/方法 假如我们的表格中有下图所示的一系列数据,可以看出其中有一些重复. 首先我们选中所有数据.可以先用鼠标点击"A1单元格&qu ...
- 学习Linux tar 命令:最简单也最困难
摘要:在本文中,您将学习与tar 命令一起使用的最常用标志.如何创建和提取 tar 存档以及如何创建和提取 gzip 压缩的 tar 存档. 本文分享自华为云社区<Linux 中的 Tar 命令 ...
- 第20篇-加载与存储指令之ldc与_fast_aldc指令(2)
ldc指令将int.float.或者一个类.方法类型或方法句柄的符号引用.还可能是String型常量值从常量池中推送至栈顶. 这一篇介绍一个虚拟机规范中定义的一个字节码指令ldc,另外还有一个虚拟机内 ...