QQ登录

只需一步,快速开始

183上位机VC MFC实现文件分类管理

[ 复制链接 ]

183上位机VC MFC实现文件分类管理

183上位机VC MFC实现文件分类管理
183上位机VC MFC实现文件分类管理
功能展示
有时文件夹内文件过多,想进行归档分类,我们就得对文件夹进行迭代查找文件,将相同后缀的文件移动到指定位置。当前例程就实现了文件分类整理功能。
点击浏览打开文件夹后会罗列出文件夹内全部文件;
双击列出的文件会搜索列出与此文件后缀相同的全部文件;
点击移动,可以将后缀相同的文件移动到指定的目录;
效果如图;
要点提示
文件夹的浏览我们习惯用函数SHBrowseForFolder()实现;
文件的移动可以用函数MoveFile();
主要是用关键字查找文件功能和后缀查找文件类型的功能实现;
我们当前例程使用CFileFind类的成员变量编写两个函数,实现关键字查找文件,和文件后经名查找文件;两个函数都实现迭代查找功能;
实现功能
1.新建基于对话框的应用程序
2.拖拽一编辑框和按钮用于浏览与显示要查找的文件文件夹路径;
  1. void CGkbc8Dlg::OnExplor()
  2. {
  3.         char buf[MAX_PATH];
  4.         ZeroMemory(buf,MAX_PATH);
  5.         BROWSEINFO bif;
  6.         bif.hwndOwner=GetSafeHwnd();
  7.         bif.iImage = 0;
  8.         bif.lParam=0;
  9.         bif.lpfn=NULL;
  10.         bif.lpszTitle="选择文件夹";
  11.         bif.pidlRoot = 0;
  12.         bif.pszDisplayName=buf;
  13.         bif.ulFlags=BIF_EDITBOX;
  14.         LPITEMIDLIST pIil=NULL;
  15.         pIil=SHBrowseForFolder(&bif);
  16.         if(pIil != NULL)
  17.         {
  18.                 SHGetPathFromIDList(pIil,buf);
  19.                 SetDlgItemText(IDC_EDIT1,buf);

  20.                 CListBox* pListBox = (CListBox*)GetDlgItem(IDC_LIST1);
  21.                 pListBox->ResetContent();
  22.                 FindFile(CString(buf),CString('.'));
  23.                 pListBox->SetHorizontalExtent(600);
  24.         }
  25. }
复制代码
拖拽一列表框ID为IDC_LIST1用于显示已找到的文件路径;
双击列表控件,关联鼠标双击函数实现指定文件类型的查找;
  1. void CGkbc8Dlg::OnDblclkList1()
  2. {
  3.         CString sPath,sText;
  4.         CListBox* pListBox = (CListBox*)GetDlgItem(IDC_LIST1);
  5.         pListBox->GetText(pListBox->GetCurSel(),sText);

  6.         sText= sText.Right(sText.GetLength()-sText.ReverseFind('.'));

  7.         GetDlgItemText(IDC_EDIT1,sPath);
  8.         pListBox->ResetContent();
  9.         FindFileType(sPath,sText);
  10. }
复制代码
3.拖拽复位和移动按钮,实现文件的生意查找与找到文件的移动功能
  1. void CGkbc8Dlg::OnReset()
  2. {
  3.         CListBox* pListBox = (CListBox*)GetDlgItem(IDC_LIST1);
  4.         pListBox->ResetContent();
  5.         CString sPath;
  6.         GetDlgItemText(IDC_EDIT1,sPath);
  7.         if(sPath.IsEmpty())
  8.                 return;
  9.         FindFile(sPath,CString('.'));
  10. }

  11. void CGkbc8Dlg::OnMove()
  12. {
  13.         char buf[MAX_PATH];
  14.         ZeroMemory(buf,MAX_PATH);
  15.         BROWSEINFO bif;
  16.         bif.hwndOwner=GetSafeHwnd();
  17.         bif.iImage = 0;
  18.         bif.lParam=0;
  19.         bif.lpfn=NULL;
  20.         bif.lpszTitle="选择文件夹";
  21.         bif.pidlRoot = 0;
  22.         bif.pszDisplayName=buf;
  23.         bif.ulFlags=BIF_EDITBOX;
  24.         LPITEMIDLIST pIil=NULL;
  25.         
复制代码
  1. pIil=SHBrowseForFolder(&bif);
  2.         if(pIil != NULL)
  3.         {
  4.                 SHGetPathFromIDList(pIil,buf);
  5.                 CString sNewFile,sOldFile;
  6.                 CListBox* pListBox = (CListBox*)GetDlgItem(IDC_LIST1);
  7.                 for(int i=0;i<pListBox->GetCount();i++)
  8.                 {
  9.                         pListBox->GetText(i,sOldFile);

  10.                         sNewFile=buf;
  11.                         sNewFile+=sOldFile.Right(sOldFile.GetLength()-sOldFile.ReverseFind('\\'));
  12.                         ::MoveFile(sOldFile,sNewFile);
  13.                 }
  14.                 OnReset();//复位列表框
  15.         }        
  16. }
复制代码
其中  BOOL FindFile(CString sDir,CString sFileName);
  BOOLFindFileType(CString sDir,CString sFileName);由于函数体过长,可以下载例程学习
我们来演示下功能实现的整个过程
请点击此处下载

请先注册会员后在进行下载

已注册会员,请先登录后下载

文件名称:183.上位机VC MFC实现文件分类管理.rar 
文件大小:122.16 KB  售价:10金币
下载权限: 不限 以上或 VIP会员   [购买捐助会员]   [充值积分]   有问题联系我

  

您的支持是我们创作的动力!  

  

您可花点闲钱积分自助任意充值

  

成为VIP会员 全站资源任意下载永久更新!


回复

使用道具 举报

快速回复 返回列表 客服中心 搜索