工控编程吧
标题:
166上位机VC MFC多线程快速文件搜索
[打印本页]
作者:
qq263946146
时间:
2016-1-16 20:49
标题:
166上位机VC MFC多线程快速文件搜索
(, 下载次数: 1)
上传
点击文件名下载附件
166上位机VC MFC多线程快速文件搜索
功能展示
文件的搜索在上位机开发时也是常用到的功能,我们当前例程实现多线程环境下在任何位置中文件的搜索功能,可以整个文件名搜索部分文件名搜索,后缀进行搜索,效果如图;
要点提示
文件的搜索我们可以使用类CFileFind中的成员函数为实现;主要有函数有FileFile()用于查找指定文件;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() //开户线程查找
{
CWinThread* pThread = AfxBeginThread(
FindFileThreadFunc,
this,
THREAD_PRIORITY_NORMAL,
0,
0);
ASSERT_VALID( pThread );
}
void CGkbc8Dlg::OnBtstop()
{
m_bIsWaitStop = TRUE;
}
其中FindFileThreadFunc为线程函数
UINT FindFileThreadFunc( LPVOID lParam )
{
CGkbc8Dlg* pArent = (CGkbc8Dlg*)lParam;
pArent->FindFile();
return 0;
}
复制代码
线程函数中又调用查找文件函数实现文件查找功能
m_bIsWaitStop为添加的标识是否停止 搜索的变量,如果点击停止,将绘终止线程退出搜索;
我们来演示下功能实现的整个过程
[iqiyi]http://player.video.qiyi.com/5954afa1b8326b1fa8315d9956711975/0/0/w_19rtdzgykd.swf-albumId=5194161809-tvId=5194161809-isPurchase=0-cnId=12[/iqiyi]
(, 下载次数: 0)
上传
点击文件名下载附件
[note]1[/note]
欢迎光临 工控编程吧 (https://www.gkbc8.com/)
Powered by Discuz! X3.4