为了账号安全,请及时绑定邮箱和手机立即绑定

如下所示,怎么能让查找的结果没有这俩呢?

如下所示,怎么能让查找的结果没有这俩呢?

C
UYOU 2023-03-03 18:13:16
CString temppath="C:\\window"+CString("\\*");是查找window下所有的文件但出来的结果总有C:\window\. 和C:\window\..这样做是想递归遍历window下所以的文件(包括子文件夹的文件)如果不这样做有好的方法也行...
查看完整描述

2 回答

?
小怪兽爱吃肉

TA贡献1852条经验 获得超1个赞

下面代码是自己改写的,通过测试,好用:

void CTestDlg::OnSelectFolder() 
{
UpdateData(TRUE);
char szDir[MAX_PATH];
BROWSEINFO bi;
ITEMIDLIST *pidl;
bi.hwndOwner = this->m_hWnd; // 指定父窗口,在对话框显示期间,父窗口将被禁用 
bi.pidlRoot = NULL; // 如果指定NULL,就以"桌面"为根 
bi.pszDisplayName = szDir;
bi.lpszTitle = "请选择目录"; // 这一行将显示在对话框的顶端  
bi.ulFlags = BIF_STATUSTEXT|BIF_RETURNONLYFSDIRS;
bi.lpfn = NULL;
bi.lParam = 0;
bi.iImage = 0;
pidl = SHBrowseForFolder(&bi);
if(pidl == NULL) return;
if(!SHGetPathFromIDList(pidl, szDir)) return;
else m_strPath = szDir;
UpdateData(FALSE);
FindFiles(m_strPath);
}

//Visit the files of the folder selected.

void CTestDlg::FindFiles(CString filePath)
{
CString fileName="";
CString result="";
filePath+= _T("\\*.*");
CFileFind finder;
BOOL bFind=FALSE;
bFind=finder.FindFile(filePath);
while(bFind)
{
bFind=finder.FindNextFile();
if (finder.IsDots())
{
continue;
}
else
{
fileName=finder.GetFilePath();
result+=fileName+"\n";
}
}
finder.Close();
MessageBox(result,"结果显示");

}

 


查看完整回答
反对 回复 2023-03-06
?
largeQ

TA贡献2039条经验 获得超8个赞

CString temppath="C:\\window"+CString("\\*.*");应该是这样的
C:\window\. 和C:\window\..
这两个是会出来的,你个代表上级目录,一个子目录

查看完整回答
反对 回复 2023-03-06
  • 2 回答
  • 0 关注
  • 133 浏览

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号