void CFindFileDlg::OnAdd()
{
BROWSEINFO bi; //定义BROWSEINFO结构体
char buffer[MAX_PATH];
ZeroMemory(buffer,MAX_PATH);
bi.hwndOwner=GetSafeHwnd();
bi.pidlRoot=NULL;
bi.pszDisplayName=buffer;
bi.lpszTitle="选择一个文件夹";
bi.ulFlags=BIF_EDITBOX;
bi.lpfn=NULL;
bi.lParam=0;
bi.iImage=0;
LPITEMIDLIST pList=NULL;
if((pList=SHBrowseForFolder(&bi))!=NULL) //显示路径选择对话框
{
char path[MAX_PATH];
ZeroMemory(path,MAX_PATH);
SHGetPathFromIDList(pList,path); //保存所选路径至path中
GetDlgItem(IDC_EDADD)->SetWindowText(path);
}
}
void CFindFileDlg::FindFile(CString strPath)
{
CString strtemp;
if(strPath.Right(1)!="\\") //判断最后一个字符是否是“\”
strtemp.Format("%s\\*.*",strPath); //在后面加\*.*
else
strtemp.Format("%s*.*",strPath); //直接加*.*
CFileFind findfile;
BOOL bfind=findfile.FindFile(strtemp);
while(bfind)
{
bfind=findfile.FindNextFile();
if(strfilename==findfile.GetFileName()) //比对找到的文件名和输入的文件名是否相同
{
int i=m_filelist.GetItemCount(); //获取列表中的项数
m_filelist.InsertItem(i,""); //插入项
m_filelist.SetItemText(i,0,findfile.GetFilePath()); //显示路径
}
if(findfile.IsDirectory()&&!findfile.IsDots()) //是路径并且不是.或..
{
FindFile(findfile.GetFilePath()); //递归调用FindFile,继续查找
}
}
}
void CFindFileDlg::OnFind()
{
CString strpath;
GetDlgItem(IDC_EDFILENAME)->GetWindowText(strfilename); //获取输入的文件名
GetDlgItem(IDC_EDADD)->GetWindowText(strpath); //获取路径
FindFile(strpath); //根据路径查找文件
}