做了个查询,想添加个进度条显示查询的进度,但是现在不知道如何控制进度条的长度。
补充:控件采用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
根据当前的大小/总的大小,然后转换成百分比不就知道了吗
我是直接读文件,一条读完就打印在list control上,所以不知道怎样确定长度。
直接把你的数据大小定义为进度条的有效范围就行
然后你处理多少数据就直接设置
你可以读总共几条,当前是第几条。然后来设置。
SetRange 设置 0 - 总条数
StepIt 每次增加1
SetStep 设置每次增加的长度。
SetPos 设置位置,刚开始为0
GetPos 用于获取当前位置,
(GetPos / 总的条数)* 100