您的位置首页百科知识

MFC应用实例:[64]文件夹重命名

MFC应用实例:[64]文件夹重命名

的有关信息介绍如下:

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("重命名失败");

}

程序运行如下: