165上位机VC MFC迭代搜索文件
165上位机VC MFC迭代搜索文件
功能展示
文件的搜索在上位机开发时也是常用到的功能,我们当前例程实现任何位置中文件的搜索功能,可以整个文件名搜索部分文件名搜索,后缀进行搜索,效果如图; 要点提示 文件的搜索我们可以使用类CFileFind中的成员函数为实现;主要有函数有FindFile()用于查找指定文件;FindNextFile()用于查找下一文件名,通过返回值可以判断是否是查找的文件; IsDots() 用于判断目标文件是否是 “.”或”..”; IsDirectory()用于判断目标文件是否是文件夹; GetFileName()用于获取查找到的文件的文件名; GetFilePath()用于获取查找到的文件的绝对路径;
实现功能 1.新建基于对话框的应用程序 2.拖拽一编辑框ID为IDC_EDIT1用于显示要查找的文件夹路径; 拖拽一按钮关联函数,用于浏览打开要查找的文件夹 拖拽一编辑框ID为IDC_EDIT2,用于输入要查找的文件名; 拖拽两按钮查找,停止查找,用于开始与停止 查找;
拖拽一列表框用于罗列出查找到的文件;按钮函数依次为 - void CGkbc8Dlg::OnAdd()
- {
- BROWSEINFO bi;
- 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)
- {
- SHGetPathFromIDList(pList,buffer);
- SetDlgItemText(IDC_EDIT1,buffer);}
复制代码- void CGkbc8Dlg::OnFind()
- {
- m_bIsWaitStop = FALSE;
- CListBox* pListBox = (CListBox*)GetDlgItem(IDC_LIST1);
- pListBox->ResetContent ();
-
- CString sDir,sFileName;
- GetDlgItemText(IDC_EDIT1,sDir);
- GetDlgItemText(IDC_EDIT2,sFileName);
- if(sDir.IsEmpty()||sFileName.IsEmpty())//空返回
- return;
- FindFile(sDir,sFileName);
- m_bIsWaitStop = FALSE;
- }
- void CGkbc8Dlg::OnBtstop()
- {
- m_bIsWaitStop = TRUE;
- }
复制代码m_bIsWaitStop为添加的标识是否停止 搜索的变量,在单线程里意义不在;
我们来演示下功能实现的整个过程
|