MFC应用实例:[61]复制文件夹及其文件

2025-07-18 11:54:56

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

MFC应用实例:[61]复制文件夹及其文件

2、界面设计如下,添加四个按钮,两个编辑框,两个文本控件。

MFC应用实例:[61]复制文件夹及其文件

3、对源目录后面的“>>”按钮添加响应函数OnRfolder(),响应函数OnRfolder()代码如下:void C潮贾篡绐CopyFolderDlg::OnRfolder(){ LPMALLOC pMalloc; //定义指向IMalloc的指针 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_strSourceFolder = szBuffer; UpdateData(false); } else { AfxMessageBox("不能得到所选的文件夹!",MB_ICONSTOP|MB_OK); return; } pMalloc->Free(lpItemIDList); pMalloc->Release(); }}

MFC应用实例:[61]复制文件夹及其文件

4、对目的目录后面的“>>”按钮添加响应函数蚪嬷吃败OnDfolder(),响应函数OnDfolder()代码如下:void CCopyFolderDlg::O荏鱿胫协nDfolder(){ LPMALLOC pMalloc; //定义指向IMalloc的指针 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_strDestFolder = szBuffer; UpdateData(false); } else { AfxMessageBox("不能得到所选的文件夹!",MB_ICONSTOP|MB_OK); return; } pMalloc->Free(lpItemIDList); pMalloc->Release(); }}

MFC应用实例:[61]复制文件夹及其文件

5、对“复制”按钮添加响应函数OnCopy(),响应函数OnCopy()代码如下:void CCopyFolderDlg::OnCopy(){ UpdateData(true); SHFILEOPSTRUCT sfo;//结构体 char szSource[MAX_PATH]; char szDest[MAX_PATH]; lstrcpy(szSource,m_strSourceFolder);//源目录 lstrcpy(szDest,m_strDestFolder);//目的目录 szSource[lstrlen(szSource)+1] = 0; szDest[lstrlen(szDest)+1] = 0; sfo.hwnd = NULL;//窗口指针 sfo.wFunc = FO_COPY;//操作类型为复制 sfo.pFrom = (LPCSTR)szSource;//源目录 sfo.pTo = (LPCSTR)szDest;//目的目录 sfo.fFlags = FOF_NOCONFIRMATION | //对所有复制过程中可能弹出的对话框采用“全是”选项 FOF_SIMPLEPROGRESS | //使用进度条 FOF_NOCONFIRMMKDIR ; //不自动创建新目录 sfo.hNameMappings = 0; sfo.lpszProgressTitle = "文件夹拷贝";//进度条的标题 if(SHFileOperation(&sfo)==0) //拷贝成功,SHFileOperation返回0 AfxMessageBox("成功完成拷贝!"); else AfxMessageBox("拷贝出错");}

MFC应用实例:[61]复制文件夹及其文件

6、程序运行如下:

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