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

2025-12-09 06:10:36

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

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

2、界面设计如下:

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

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);

}

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

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("请选择目录!");

}

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

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);

}

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

6、程序运行结果:

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

声明:本网站引用、摘录或转载内容仅供网站访问者交流或参考,不代表本站立场,如存在版权或非法内容,请联系站长删除,联系邮箱:site.kefu@qq.com。
猜你喜欢