SHFileOperation复制文件夹、文件用法

一、函数原型

    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;
}

 

 

 

 

 

 

 

你可能感兴趣的:(C/C++,MFC)