工控编程吧
标题:
171上位机VC MFC文件夹的新建复制改名删除操作
[打印本页]
作者:
qq263946146
时间:
2016-1-15 21:40
标题:
171上位机VC MFC文件夹的新建复制改名删除操作
(, 下载次数: 3)
上传
点击文件名下载附件
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,"重命名文件夹失败");
}
复制代码
代码过多过长,可以下载例程学习
我们来演示下功能实现的整个过程
[iqiyi]http://player.video.qiyi.com/7d49f6bf20a8ba34739620c2f020e4a2/0/0/w_19rtdrpa1l.swf-albumId=5189646709-tvId=5189646709-isPurchase=0-cnId=12[/iqiyi]
(, 下载次数: 0)
上传
点击文件名下载附件
[note]1[/note]
欢迎光临 工控编程吧 (https://www.gkbc8.com/)
Powered by Discuz! X3.4