162上位机VC MFC删除指定文件到回收站
162上位机VC MFC删除指定文件到回收站 功能展示 文件的删除操作也是一个程序很常用的功能,删除文件的方法很多,有直接删除,也有删除到回收站,以防误删操作;我们当前例程实现指定文件删除到回收站功能,效果如图,浏览指定要删除的文件后,点击删除便可; 要点提示 我们当前用到的文件删除函数为SHFileOperation();此函数用于删除,移动和复制重命名文件的操作;函数原型为WINSHELLAPIint WINAPI SHFileOperation( LPSHFILEOPSTRUCT lpFileOp );它跟随一个结构体参数,查阅MSDN可知晓此结构体的成员变量含义; Wndw,拥有者窗口句柄; wFunc文件操作功能,我们例程使用FO_DELETE进行文件删除工作;pFrom 要删除的文件路径;pTo目标文件我们当前例程设为NUUL指向回收站; fFlag文件控制标识;fAnyOperationsAborted标识用户是否可中断操作;hNameMappings指向一个SHNAMEMAPPING结构体指针 ;lpszProgressTile进行标题; 要注意的是 结构体的pFrom,pTo需以“\0”结尾,不然删除文件失败;具体用法参照例程 实现功能 1.新建基于对话框的应用程序 2.拖拽编辑框控件ID默认为IDC_EDIT1,拖拽浏览文件,删除文件按钮,关联函数 - void CGkbc8Dlg::OnButton1()
- {
- CFileDialog Dlg(true,NULL,NULL,OFN_HIDEREADONLY|OFN_OVERWRITEPROMPT,"All Files(*.*)|*.*| |",AfxGetMainWnd());
- if(Dlg.DoModal()==IDOK)
- {
- CString sText= Dlg.GetPathName();
- SetDlgItemText(IDC_EDIT1,sText);
- }
- }
复制代码- void CGkbc8Dlg::OnButton2()
- {
- CString sPath;
- GetDlgItemText(IDC_EDIT1,sPath);
- if(sPath.IsEmpty())//编辑框没内容
- return;
- char fileName[_MAX_PATH]="\0";
- strcpy(fileName,sPath);
- strcat(fileName,"\0");
-
- SHFILEOPSTRUCT shfile;
- ZeroMemory((void*)&shfile,sizeof(SHFILEOPSTRUCT));
- shfile.hwnd = 0;
- shfile.wFunc = FO_DELETE;
- shfile.pFrom = fileName;
- shfile.pTo = NULL;
- shfile.fFlags = FOF_ALLOWUNDO;
- shfile.hNameMappings = NULL;
- shfile.lpszProgressTitle =NULL ;
- SHFileOperation(&shfile);//执行删除
- }
复制代码我们来演示下功能实现的整个过程
|