整体实现方式:先获得文件长度,然后用每次读取的长度,计算出完成的百分比,用百分比的值设置进度条。
MFC进度条ProgressControl相关函数
create——创建ProgressControl针对不是通过资源文件上拖拉进度条控件生成的进度条,需要用此函数创建一个。SetRange——设置进度条范围设置进度条的起始值和终止值。SetPos——设置当前值设置进度条的当前位置。OffSetPos——偏移一段位置移动进度条一段距离SetStep——设置步长设置进度条偏移一次的长度,一般与StepIt搭配使用StepIt——更新步长位置按照步长来更新位置。GetPos——得到当前值获得进度条当前值。
示例
首先在初始化函数中设置范围和当前初始值
CProgressCtrl* pProg = (CProgressCtrl*)GetDlgItem(IDC_PROGRESS);
pProg->SetRange(0, 100);
pProg->SetPos(0);
获取目标txt文件的总行数
while(!feof(fOpenFile)) {
if(fgets(szBuf, sizeof(szBuf) - 1, fOpenFile)) {
nRowOfTotalNum++;
}
}
nRowOfTotalNum++;
fseek(fOpenFile, 0, SEEK_SET);
这里,读取完总行数后,要将文件指针指向文件头。
获取当前读取进度的行数,计算出完成的百分比,用百分比的值设置进度条。
fRowOfCurrentNum = nRowOfCurrentNum;
fRowOfTotalNum = nRowOfTotalNum;
fProPos = (fRowOfCurrentNum / fRowOfTotalNum) * 100.00;
nProPos = fProPos;
cProFileCtl.SetPos(nProPos);
PS:SetPos只能接受int型变量,而计算后的进度又要使用Float类型进行保存计算,所以这里要特别注意各个变量之间计算时的类型转换问题,否则会一直出现Pos为0而进度条始终没有反应的情况。
最终即可完成读写.txt文件时进度条显示实时进度的功能。
文章为作者独立观点,不代表 股票程序化软件自动交易接口观点
柏拉图@2023-10-09
香港的股票从业人员真是爽,全年交易日就200多天,天气一变就放假,1年真正上班的时间怕是都不到200天。