一、函数原型
int SHFileOperation( LPSHFILEOPSTRUCT lpFileOp);
二、SHFILEOPSTRUCT结构
typedef struct _SHFILEOPSTRUCT {
HWND hwnd;//指向发送消息的窗口
UINT wFunc;//执行的操作
LPCTSTR pFrom;//源文件名
LPCTSTR pTo;//目标文件名
FILEOP_FLAGS fFlags;//操作与确认标识
BOOL fAnyOperationsAborted;//操作是否终止
LPVOID hNameMappings;//文件映射
LPCTSTR lpszProgressTitle;//进度条标题
} SHFILEOPSTRUCT, *LPSHFILEOPSTRUCT;
三、关键参数说明
wFunc:要执行的操作。可选参数:FO_COPY:复制 FO_DELETE:删除 FO_MOVE:移动 FO_RENAME:重命名
pFrom:源文件名 pTo:目标路径
注:MSDN上说要以两个\0结束,所以一般的字符串必须还要加上一个'\0'而不是“\0”
fFlags : 执行标识
FOF_SILENT //不产生正在复制的对话框
FOF_NOCONFIRMMKDIR//如果目的目录不存在,就默认创建
FOF_NOCONFIRMATION //不出现确认文件替换对话框(默认替换原来的文i件)
FOF_NOERRORUI//不出现错误对话框
四、例程
CString strSource = "C:\\a";
strSource += '\0';//注意必须是'\0'而不是"\0"!~!!
CString strDes = "C:\\b";
strDes += '\0';
SHFILEOPSTRUCT fop;
fop.wFunc = FO_COPY;//选择执行类型,FO_COPY,FO_DELETE,FO_RENAME,FO_MOVE四种
fop.pFrom = strSource;//源文件夹的路径,以'\0'即空为结尾
fop.pTo = strDes;//拷入文件的文件夹路径,以'\0'即空为结尾
if (SHFileOperation(&fop) == 0)
{
return true;
}
else
{
return false;
}