1、新建一个基于对话框的应用程序,工程名为RenameDir。
![MFC应用实例:[64]文件夹重命名](https://exp-picture.cdn.bcebos.com/b666b2530688912ca717215b1b4800fc76f79770.jpg)
2、界面设计如下,添加两个按钮,两个编辑框,两个文本控件。
![MFC应用实例:[64]文件夹重命名](https://exp-picture.cdn.bcebos.com/a48bc2e8904800fc712a65bdd42043715edb9370.jpg)
3、对“...”按钮添加响应函数OnBTFindDir(拘七呷憎),响应函数OnBTFindDir()代码如下:void CRenameDirDlg::OnBTFindDir(){ CStri荏鱿胫协ng path = SelectFolder(this->m_hWnd); //打开要重命名的文件夹 GetDlgItem(IDC_EDIT1)->SetWindowText(path); //将文件夹的路径显示在编辑框}CString CRenameDirDlg::SelectFolder(const HWND& hwnd)//选择文件夹{ CString str; LPMALLOC pMalloc; str.Empty(); if (::SHGetMalloc(&pMalloc) == NOERROR) { BROWSEINFO bi; TCHAR pszBuffer[MAX_PATH]; LPITEMIDLIST pidl; bi.hwndOwner = hwnd; bi.pidlRoot = NULL; bi.pszDisplayName = pszBuffer; bi.lpszTitle = _T("select directory"); bi.ulFlags = BIF_RETURNFSANCESTORS | BIF_RETURNONLYFSDIRS; bi.lpfn = NULL; bi.lParam = 0; bi.iImage = 0; if ((pidl = ::SHBrowseForFolder(&bi)) !=NULL) { if (::SHGetPathFromIDList(pidl, pszBuffer)) str = pszBuffer; else return _T(""); pMalloc->Free(pidl); } pMalloc->Release(); } return str;}
![MFC应用实例:[64]文件夹重命名](https://exp-picture.cdn.bcebos.com/01bd69f7980e5f204aaca268bd20b93acc898e70.jpg)
4、对“重命名”按钮添加响应函数OnBTRename(),响应函数OnBTRename()代码如下:void CRenameD足毂忍珩irDlg::OnBTRename() //给文件夹重命名{ CString path; GetDlgItem(IDC_EDIT1)->GetWindowText(path);//得到源文件夹路径 CString dst = path; //得到文件夹所在目录 int len = path.GetLength(); //得到路径长度 int index = path.ReverseFind('\\') + 1; dst.Delete(index, len - index); CString temp; GetDlgItem(IDC_EDIT2)->GetWindowText(temp);//得到重命名后的文件夹名 dst += temp; if (MoveFile(path, dst))//重命名 MessageBox("重命名完成"); else MessageBox("重命名失败");}
![MFC应用实例:[64]文件夹重命名](https://exp-picture.cdn.bcebos.com/423041db3620b93ac054dd76ad0f8835dc8a8a70.jpg)
5、程序运行如下:
![MFC应用实例:[64]文件夹重命名](https://exp-picture.cdn.bcebos.com/ccc83ec5260f8835cc57a46dce07880139708670.jpg)