171上位机VC MFC文件夹的新建复制改名删除操作
171上位机VC MFC文件夹的新建复制改名删除操作 功能展示 文件夹的操作为是编写编程时常用的功能,当前例程实现了文件夹的创建,删除,重命名,复制和强制删除带有文件及子文件夹的功能,效果如图; 要点提示 创建文件夹可以用函数CreateDirectory()实现; 删除文件夹可以用函数RemoveDirectory()实现; 删除带有子文件夹及文件的文件夹可以用函数SHFileOperation()实现 重命名文件夹和文件重命名一样,可以用函数MoveFile()实现; 复制文件夹也可以通过函数SHFileOperation()实现,只要修改其参数的具体变量; 实现功能 1.新建基于对话框的应用程序 2.拖拽一静态文本控件ID修改为IDC_NOTE用于显示操作结果; 拖拽一编辑框控件ID为IDC_EDIT1,用于显示文件夹路径; 3.依次拖拽按钮控件,实现相应功能,按钮关联函数独立运行 - void CGkbc8Dlg::OnExplor()
- {
- //><获取桌面路径
- LPITEMIDLIST pidl;
- LPMALLOC pShellMalloc;
- char szDir[MAX_PATH];
-
- if(SUCCEEDED(SHGetMalloc(&pShellMalloc)))
- {
- if(SUCCEEDED(SHGetSpecialFolderLocation(NULL,CSIDL_DESKTOP,&pidl)))
- {
- SHGetPathFromIDList(pidl, szDir);
- pShellMalloc->Free(pidl);
- }
- pShellMalloc->Release();
- }
- //><选择路径
- BROWSEINFO bi;
- bi.hwndOwner = this->GetSafeHwnd();
- bi.pidlRoot = NULL;
- bi.pszDisplayName = NULL;
- bi.lpszTitle = TEXT("请选择文件夹");
- bi.ulFlags = BIF_RETURNONLYFSDIRS | BIF_STATUSTEXT;
复制代码- bi.lpfn = BrowseCallBackFun;NULL; // //回调函数
- bi.lParam = (LPARAM)szDir;//= 0;//传给回调函数的参数,设置默认路径
- bi.iImage = 0;
-
- pidl = SHBrowseForFolder(&bi);
- if (pidl == NULL)
- return;
-
- if (SHGetPathFromIDList(pidl, szDir))
- {
- CString sDir(szDir);
- sDir+="\\工控编程吧";
- SetDlgItemText(IDC_EDIT1,sDir);
- }
- }
- int CALLBACK BrowseCallBackFun(HWND hwnd, UINT uMsg, LPARAM lParam, LPARAM lpData)
- {
- switch(uMsg)
- {
- case BFFM_INITIALIZED: //选择文件夹对话框初始化
- ::SendMessage(hwnd, BFFM_SETSELECTION, TRUE, lpData);//设置默认路径
- ::SendMessage(hwnd, BFFM_SETSTATUSTEXT, 0, lpData); //在STATUSTEXT区域显示当前路径
- ::SetWindowText(hwnd, TEXT("请先设置个工作目录"));//设置选择文件夹对话框的标题
- break;
- case BFFM_SELCHANGED: //选择文件夹变更时
- {
- TCHAR pszPath[MAX_PATH];
- SHGetPathFromIDList((LPCITEMIDLIST)lParam, pszPath); //获取当前选择路径
- ::SendMessage(hwnd, BFFM_SETSTATUSTEXT, TRUE, (LPARAM)pszPath);//在STATUSTEXT区域显示当前路径
- }
- break;
- }
- return 0;
- }
复制代码- void CGkbc8Dlg::OnCreate() //创建文件夹
- {
- CString sDir;
- GetDlgItemText(IDC_EDIT1,sDir);
- if(::CreateDirectory(sDir,NULL))
- SetDlgItemText(IDC_NOTE,"创建文件夹成功");
- else
- SetDlgItemText(IDC_NOTE,"创建文件夹失败");
- }
- void CGkbc8Dlg::OnRename()
- {
- CString sDir,sNewDir,sFoldName;
- GetDlgItemText(IDC_EDIT1,sDir);
- sFoldName = sDir.Right(sDir.GetLength()-sDir.ReverseFind('\\')-1);
- if(sFoldName == "工控编程吧")
- sFoldName ="gkbc8.com";
- else
- sFoldName="工控编程吧";
- sNewDir = sDir.Left(sDir.ReverseFind('\\')+1);
- //
- sNewDir+=sFoldName;
- if(::MoveFile(sDir,sNewDir) )
- {
- SetDlgItemText(IDC_EDIT1,sNewDir);
- SetDlgItemText(IDC_NOTE,"重命名文件夹成功");
- }
- else
- SetDlgItemText(IDC_NOTE,"重命名文件夹失败");
- }
复制代码代码过多过长,可以下载例程学习
我们来演示下功能实现的整个过程
|