MFC应用实例:[64]文件夹重命名
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()
{
CString 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 CRenameDirDlg::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)