1 int SHFileOperation( LPSHFILEOPSTRUCT lpFileOp);
如果执行成功返回0.
参数说明:
wFunc: 要执行的操作
FO_COPY: 复制
FO_DELETE: 删除
FO_MOVE: 移动
FO_RENAME: 重命名
pFrom:源文件名
MSDN上说要以两个\0结束,所以一般的字符串必须还要加上一个\0
比如:
// 错误的用法
LPTSTR pszSource = L"C:\\Windows";
// 正确的用法
LPTSTR pszSource = L"C:\\Windows\0";
对于CString,正确的用法是这样的
CString strSource("C:\\Windows");
strSource += '\0';//注意必须是'\0'而不是"\0"
fFlags: 执行标识
FOF_SILENT //不产生正在复制的对话框
FOF_NOCONFIRMMKDIR //如果目的目录不存在,就默认创建
FOF_NOCONFIRMATION //不出现确认文件替换对话框(默认替换原来的文i件)
FOF_NOERRORUI //不出现错误对话框
注:
注:最好不要同时使用FOF_NOERRORUI,FOF_NOCONFIRMMKDIR,因为FOF_NOCONFIRMMKDIR屏蔽了missing directory Error,但FOF_NOERROR又屏蔽了missing directory Error,那么在同时使用FOF_NOERRORUI,FOF_NOCONFIRMMKDIR时也阻止了新目录安静(没有用户确认要产生新目录的对话框)的产生!!那么如何同时使用FOF_NOERRORUI,FOF_NOCONFIRMMKDIR?
就必须先确认pTo所指定的目录存在即可
BOOL MakeSureDiretoryPathExists(LPCSTR DirPath); //使用它要包含imagehlp.h和imagehlp.lib
如何判断同时存在FOF_NOERRORUI,FOF_NOCONFIRMMKDIR
=====
如果出现弹出"无法删除 文件无法:读取源文件或磁盘文.",可:FOF_NOCONFIRMATION|FOF_NOCONFIRMMKDIR|FOF_NOERRORUI
=====
FOF_RENAMEONCOLLISION //有重复文件时自动重命名
FOF_ALLOWUNDO //将文件放入回收站,否则直接删除,一般这个最好做默认
使用该函数进行文件拷贝、移动或删除时,如果需要的时间很长,则程序会自动在进行的过程中出现一个无模式的对话框(Windows操作系统提供的文件操作对话框),用来显示执行的进度和执行的时间,以及正在拷贝、移动或删除的文件名,此时结构中的成员lpszProgressTitle显示此对话框的标题。fFlags是在进行文件操作时的过程和状态控制标识。它主要有如下一些标识,也可以是其组合:
FOF_FILESONLY //执行通配符,只执行文件;
FOF_ALLOWUNDO //保存UNDO信息,以便在回收站中恢复文件;
FOF_NOCONFIRMATION //在出现目标文件已存在的时候,如果不设置此项,则它会出现确认是否覆盖的对话框,设置此项则自动确认,进行覆盖,不出现对话框。
FOF_NOERRORUI //设置此项后,当文件处理过程中出现错误时,不出现错误提示,否则会进行错误提示。
FOF_RENAMEONCOLLISION //当已存在文件名时,对其进行更换文提示。
FOF_SILENT //不显示进度对话框。
FOF_WANTMAPPINGHANDLE