多语言展示
当前在线:1168今日阅读:61今日分享:18

MFC应用实例:[60]删除指定类型的文件

删除指定目录下某种类型的文件。
工具/原料

Microsoft Visual Studio 2015

方法/步骤
1

新建一个基于对话框的应用程序,工程名为DeleteCertainFolderFile

2

界面设计如下:

3

双击“>>”按钮添加响应函数OnFolder(),在响应函数OnFolder()中添加一下代码:void CDeleteCertainFolderFileDlg::OnFolder() { //定义指向IMalloc的指针    LPMALLOC  pMalloc;      if (::SHGetMalloc(&pMalloc) != NOERROR)        return; // failed to get allocator    char szDisplayName[_MAX_PATH];    char szBuffer[_MAX_PATH];    BROWSEINFO browseInfo; //构造对话框结构    browseInfo.hwndOwner = this->m_hWnd;    browseInfo.pidlRoot = NULL; //设置根目录为桌面    browseInfo.pszDisplayName = szDisplayName;    browseInfo.lpszTitle = '选择删除文件的目录';   //对话框标题    browseInfo.ulFlags = BIF_RETURNFSANCESTORS|BIF_RETURNONLYFSDIRS;    browseInfo.lpfn = NULL;     //未用    browseInfo.lParam = 0;       //未用    LPITEMIDLIST lpItemIDList;    if ((lpItemIDList = ::SHBrowseForFolder(&browseInfo))!= NULL)    { //得到目录的路径        if (::SHGetPathFromIDList(lpItemIDList, szBuffer))        {            if (szBuffer[0] == '\0')            {                return ;            }            m_strFolder = szBuffer; UpdateData(false);        }        else        { AfxMessageBox('不能得到所选的文件夹!',MB_ICONSTOP|MB_OK); return;        }        pMalloc->Free(lpItemIDList);        pMalloc->Release();    } DisplayFileList(m_strFolder);}

4

双击“删除文件”按钮添加响应函数OnDelete(),在响应函数OnDelete()中添加一下代码:void CDeleteCertainFolderFileDlg::OnDelete() { UpdateData(true); CString m_extern; switch (m_radio) //获取要删除文件类型的后缀名 { case 0: GetDlgItem(IDC_RADIO1)->GetWindowText(m_extern); break; case 1: GetDlgItem(IDC_RADIO2)->GetWindowText(m_extern); break; case 2: GetDlgItem(IDC_RADIO3)->GetWindowText(m_extern); break; case 3: GetDlgItem(IDC_RADIO4)->GetWindowText(m_extern); break; case 4: GetDlgItem(IDC_RADIO5)->GetWindowText(m_extern); break; } if(m_strFolder!='' && m_extern!='')//当前目录和文件类型不为空 { CString str,strdel; //构造类似'C:\\My Documents\\*.txt'的类型 char string[60]; strcpy( string, m_strFolder); strcat( string, '\\*' ); strcat( string, m_extern ); CFileFind filefind; if(filefind.FindFile(string,0)!=0)//遍历搜索文件 { while(filefind.FindNextFile()!=0) { strdel=filefind.GetFilePath();//获取文件名 CFile::Remove(strdel);//删除文件 } strdel=filefind.GetFilePath(); CFile::Remove(strdel); AfxMessageBox('文件删除完成!'); DisplayFileList(m_strFolder);//更新显示列表框 } else { AfxMessageBox('当前目录下,没有这种类型的文件!'); } } else AfxMessageBox('请选择目录!');}

5

在CDeleteCertainFolderFileDlg类中添加DisplayFileList(),OnChangeEdit1()这两个函数,代码如下:void CDeleteCertainFolderFileDlg::DisplayFileList(CString strdir) { TCHAR szPath [MAX_PATH]; strcpy(szPath,strdir); //DlgDirList函数用于向ListBox中加入某路径下的文件 int nReslt = DlgDirList( szPath,//目录 IDC_LIST1,//ListBox的资源ID 0,//当前选择的驱动器和路径的静态控件ID,如果不用显示这些驱动器和路径,置为0 DDL_READWRITE|DDL_READONLY|DDL_HIDDEN|DDL_SYSTEM|DDL_ARCHIVE);}void CDeleteCertainFolderFileDlg::OnChangeEdit1() { // TODO: Add your control notification handler code here UpdateData(true); DisplayFileList(m_strFolder);}

6

程序运行结果:

注意事项

注意函数的添加

推荐信息