大家好:
最近我用SHFileOperation函数作了一个自己定义的函数copy目录,虽然现在还没有把最后的问题搞定,但是觉得他的用途非常广泛。下面就他的用法给大家说一下:
首先,这个函数的功能可以复制,删除,创建,重命名文件、目录等功能;
其次,用这个函数需要一个数据结构的支持,那就是神秘的SHFILEOPSTRUCT,下面给大家介绍一下这个结构。
SHFILEOPSTRUCT FileOP
FileOP.hwnd = AfxGetApp()->m_pMainWnd->m_hWnd;
FileOP.fFlags = FOF_SILENT;
FileOP.wFunc = FO_COPY;
FileOP.pFrom = szSourcePath;
FileOP.pTo = szDestinationPath;
FileOP.fAnyOperationsAborted = FALSE; //
FileOP.hNameMappings = NULL;
FileOP.lpszProgressTitle = NULL;
根据上面的代码可以看到这个数据的结构,我们一般需要关心的就是这几项。
本函数支持多路径的copy delete 等功能,在使用时一定要记住FileOP.pFrom 和FileOP.pTo 后面用一个/0表示一个路径的结束用/0/0才是这一个参数的结束,大部分人出问题都在这个地方,希望大家注意了。
其中我们注意发fFlags这一项下面说明一下:
FOF_ALLOWUNDO 允许撤销,如FO_DELETE操作则会删除到回收站中
FOF_CONFIRMMOUSE Not implemented(应该是未实现)
FOF_FILESONLY 只对文件操作,前提是使用通配符*.*
FOF_MULTIDESTFILES // 有多个目的目录
FOF_NOCONFIRMATION 不显示覆盖文件对话框
FOF_NOCONFIRMMKDIR 不提示创建文件
FOF_RENAMEONCOLLISION 如果有相同文件则改名
FOF_SILENT 安静模式
FOF_SIMPLEPROGRESS // 显示简单的进程条
FOF_WANTMAPPINGHANDLE //
好了就说这么多 希望对大家有用。