MFC:选择文件夹,并列举文件夹中的内容,进行处理

	//将选择的文件夹路径保存在此变量中	
	CString m_FileSrc;         
	TCHAR Buffer[MAX_PATH];
	BROWSEINFO bi;
	ZeroMemory(&bi, sizeof(BROWSEINFO));
	bi.hwndOwner = NULL;
	bi.ulFlags = BIF_RETURNONLYFSDIRS;    //要求返回文件系统的目录
	bi.pszDisplayName = Buffer;            //此参数如为NULL则不能显示对话框
	bi.lpszTitle = _T("请选择文件夹");
	bi.lpfn = NULL;
	bi.iImage=IDR_MAINFRAME;
 
	LPITEMIDLIST pIDList = SHBrowseForFolder(&bi);//调用显示选择对话框
	if(pIDList)
	{
		SHGetPathFromIDList(pIDList, Buffer);
		//取得文件夹路径到Buffer里
		m_FileSrc = Buffer;//将文件夹路径保存在一个CString对象里
	}
 
	LPMALLOC lpMalloc;
	if(FAILED(SHGetMalloc(&lpMalloc))) 
		return;
	//释放内存
	lpMalloc->Free(pIDList);
	lpMalloc->Release();

	//逐个列举文件夹内所有txt文件
	CString strFileName, strFileTemp, strSuffixTemp;
	CFileFind findFile;
	if(m_FileSrc.Right(1)!='\\')
		strFileTemp = m_FileSrc += '\\';
	else
	{
		m_FileSrc.Right(1) = '\\';
		strFileTemp = m_FileSrc;
	}

	strFileTemp += "*.*";
	int nIsFind=findFile.FindFile(strFileTemp);          //执行文件搜索
	
	while(nIsFind)
	{
		nIsFind = findFile.FindNextFile();          //查找下一个文件
		if(findFile.IsDirectory())           //若为目录,结束本次循环
			continue;
		strFileName =findFile.GetFileName();         //获取文件名称,包括后缀
		
		if(strFileName==".." || strFileName==".")     
			continue;
		strSuffixTemp = strFileName.Mid(strFileName.GetLength()-3,3);
		//筛选txt文本文件来处理
		if(strSuffixTemp != "txt" && strSuffixTemp != "TXT")
			continue;
		strFileName = m_FileSrc + strFileName;
		//对文件进行后续处理
	}

你可能感兴趣的:(null,BI,buffer,mfc,Path)