进度条问题1

做了个查询,想添加个进度条显示查询的进度,但是现在不知道如何控制进度条的长度。
补充:控件采用progress control,数据有大有小,大的几百M。

 

应用到2个函数 如果是进度条窗口边框的大小 可以用movewindow函数

如果是进度条长度 那可以先给进度条设定一个范围 然后用第二个函数控制进度条的显示

CProgressCtrl::SetRange

void SetRange( short nLower, short nUpper );
void SetRange32( int nLower, int nUpper );

参数: nLower 指定范围的下限(缺省值是零)。  
nUpper 指定范围的上限(缺省值是100)。  


CProgressCtrl::SetPos

int SetPos( int nPos );

返回值:返回进度条控件的早先的位置。

参数: nPos 进度条控件的新位置。  

说明:
此成员函数根据nPos指定的位置来设置进度条控件的当前位置,并重画此进度条来反映新的位置。
进度条的这个位置不是它在屏幕上的物理位置,而是在SetRange中的上限和下限范围之间的位置。

 

比如数据大和数据小,这个时间怎么控制让进度条走快走慢?

如果范围不明确的,可以搞个假的进度条放在上面一直跑,就像个gif图片一样,否则用CProgressCtrl类的SetRange,SetPos调用

比如一个文件是5MB 你设置进度条为0-100 然后你读取了500KB 那么做个比较就是500KB:5mb 就是百分之十 这时候你只要用SetPos 设置为10 就可以了, 每次读取都做比较 然后设置进度条长度~

如果是数据库 比如查询库里面的条目 条目有1000行 你设置进度条SetRange 为 0 -100 然后当前读取的条目数除以1000再乘以100 setpos

根据当前的大小/总的大小,然后转换成百分比不就知道了吗

引用 5 楼 vsirsoft 的回复:
如果是数据库 比如查询库里面的条目 条目有1000行 你设置进度条SetRange 为 0 -100 然后当前读取的条目数除以1000再乘以100 setpos


我是直接读文件,一条读完就打印在list control上,所以不知道怎样确定长度。

直接把你的数据大小定义为进度条的有效范围就行
然后你处理多少数据就直接设置

 

你可以读总共几条,当前是第几条。然后来设置。
SetRange 设置 0 - 总条数
StepIt 每次增加1
SetStep 设置每次增加的长度。
SetPos 设置位置,刚开始为0
GetPos 用于获取当前位置,

(GetPos / 总的条数)* 100

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值