void CDlgSort::RefreshDataTemp(CString strDir){ULONGLONG size;ULONGLONG Size = 0;if(strDir == _T("")){return;}else{if(strDir.Right(1) != _T("//"))strDir += L"//";strDir =strDir+_T("*.*");}CFileFind finder;CString strPath;BOOL bWorking = finder.FindFile(strDir);while(bWorking){bWorking = finder.FindNextFile();strPath = finder.GetFilePath();if(finder.IsDirectory() && !finder.IsDots()){RefreshDataTemp(strPath);} //递归调用if(!finder.IsDirectory() && !finder.IsDots()){size = finder.GetLength();Size = Size + size;}}CString tr;tr.Format(_T("%I64uMB"), Size/1024/1024);SetDlgItemText(IDC_EDIT1,tr);}
1 回答
呼唤远方
TA贡献1856条经验 获得超11个赞
RefreshDataTemp(strPath);} //递归调用
这里你也写了,是递归调用,那么也就是子目录的统计,是在另一个(同名)函数调用中完成的,而size和Size都是局部变量,不会传递到上一层函数调用。
解决方法:Size 作为返值或全局变量,tr的三行语句放在这个函数之外,不参与递归。
- 1 回答
- 0 关注
- 65 浏览
添加回答
举报
0/150
提交
取消