MFC应用实例:[64]文件夹重命名
的有关信息介绍如下:对文件夹进行重命名操作。
新建一个基于对话框的应用程序,工程名为RenameDir。
界面设计如下,添加两个按钮,两个编辑框,两个文本控件。
对“...”按钮添加响应函数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;
}
对“重命名”按钮添加响应函数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("重命名失败");
}
程序运行如下: