- 测试工具
VS2013 - 需求
主要获取电脑上面文件夹下的所有文件 - 截图预览
- 部分代码
void CMFCApplication14Dlg::OnBnClickedOk()
{
/************************************************************************/
/************************************************************************/
char szPath[MAX_PATH];
CString str2;
ZeroMemory(szPath, sizeof(szPath));
BROWSEINFO bi;
bi.hwndOwner = this->GetSafeHwnd();
bi.pidlRoot = NULL;
bi.pszDisplayName = (LPWSTR)szPath;
bi.lpszTitle = _T("请选择文件夹");
bi.ulFlags = 0;
bi.lpfn = NULL;
bi.lParam = 0;
bi.iImage = 0;
>
LPITEMIDLIST lp = SHBrowseForFolder(&bi);
if (lp == NULL)
{
return;
}
else
{
SHGetPathFromIDList(lp, (LPWSTR)szPath);
str2 = (LPWSTR)szPath;
}
/************************************************************************/
/************************************************************************/
int row = m_list.GetItemCount();
CFileFind myFile;
CString FilePath;
CString root = str2;
CString str;
if (root.Right(1) != "//")
{
root += "//";
}
root += "*.*";
BOOL res = myFile.FindFile(root);
while (res)
{
res = myFile.FindNextFile();
FilePath = myFile.GetFilePath();
if (myFile.IsDirectory() && !myFile.IsDots())
{
FileSearch(FilePath);
}
else if (!myFile.IsDirectory() && !myFile.IsDots())
{
myFile.GetFilePath();
myFile.GetFileName();
str.Format(_T("%dK"),myFile.GetLength()/1024);
CString extName = GetExtName(myFile.GetFileName());
SHFILEINFO sfi = { 0 };
SHGetFileInfo(myFile.GetFileName(), 0, &sfi, sizeof(sfi), SHGFI_USEFILEATTRIBUTES | SHGFI_TYPENAME);
m_list.InsertItem(row, _T(""));
m_list.SetItemText(row, 0, myFile.GetFileName());
m_list.SetItemText(row, 1, extName);
m_list.SetItemText(row, 2, (CString)sfi.szTypeName);
m_list.SetItemText(row, 3, str);
m_list.SetItemText(row, 4, _T("未解锁"));
}
}
>}
>
void CMFCApplication14Dlg::FileSearch(CString pszPath)
{
CFileFind ff;
CString FilePath;
if (pszPath.Right(1) != "\\")
{
pszPath += "\\";
}
pszPath += "*.*";
BOOL res = ff.FindFile(pszPath);
while (res)
{
res = ff.FindNextFile();
FilePath = ff.GetFilePath();
if (ff.IsDirectory() && !ff.IsDots())
{
FileSearch(FilePath);
}
else if (!ff.IsDirectory() && !ff.IsDots())
{
}
}
return;
>}
>
CString CMFCApplication14Dlg::GetExtName(CString fileName)
{
int pos = fileName.Find(_T("."));
if (pos == -1){
return fileName;
}
else{
return GetExtName(fileName.Mid(pos + 1));
}
}