MFC-SHFileOperation文件操作

SHFileOperation是一种shell函数,shfileoperation的主要功能包括文件和目录的复制、移动、删除等常用的操作,还包括快捷方式的创建、属性的更改、应用程序的打开等操作。尤其是在移动、复制文件的时候,shfileoperation提供了非常详细的进度信息,让用户可以随时监控操作的进度。

shfileoperation主要用于文件和目录操作的GUI应用程序中,它为用户提供了非常实用的文件和目录操作方式

支持并发操作:shfileoperation可以同时执行多个文件和目录的操控操作,并保持稳定性和正确性

需要:  #include "commdlg.h"

SHFILEOPSTRUCT结构说明

复制代码
    
    SHFILEOPSTRUCT结构说明
    typedef struct _SHFILEOPSTRUCT {
    HWND hwnd;               父窗口句柄, 0为桌面
    UINT wFunc;              wFunc; 功能标识
                                FO_COPY 复制
                                FO_DELETE 删除
                                FO_MOVE 移动
                                FO_RENAME 重命名
    PCZZTSTR pFrom;           源文件或者源文件夹
    PCZZTSTR pTo;             目的文件或文件夹,可以是多个文件 
    FILEOP_FLAGS fFlags;         控制文件的标志位
                FOF_ALLOWUNDO      准许撤销,允许放回收站
                FOF_CONFIRMMOUSE   没有被使用,,,
                FOF_FILESONLY      通配符的文件名( *.* )只对文件(不是文件夹)进行操作
                FOF_MULTIDESTFILES  【pTo成员指定多个目标文件(pFrom中的每个源文件一个)
                                     而不是存放所有源文件的一个目录】
                FOF_NOCONFIRMATION   不出现任何对话框
                FOF_NOCONFIRMMKDIR 创建文件夹的时候不用确认
                FOF_NO_CONNECTED_ELEMENTS  Version 5.0适用,,不移动连接文件(connected files),只移动特定文件
                FOF_NOCOPYSECURITYATTRIBS  Version 4.71适用,,复制移动文件的时候不复制安全属性,而是为文件指定新的安全属性
                FOF_NOERRORUI     如果发生错误, 不要显示对话框给用户
                FOF_NORECURSEREPARSE 没有被使用
                FOF_NORECURSION 不递归目录
                FOF_NO_UI      Windows Vista中,默默的进行操作,不给用户呈现任何UI
                               这相当于FOF_SILENT | FOF_NOCONFIRMATION | FOF_NOERRORUI|FOF_NOCONFIRMMKDIR 
                FOF_RENAMEONCOLLISION 移动复制的时候如果名字重名,自动分配新名字
                FOF_SILENT 不显示进度条提示框
                FOF_SIMPLEPROGRESS 显示一个进度条,但不显示单个文件名
                FOF_WANTMAPPINGHANDLE  如果指定了FOF_RENAMEONCOLLISION,说明此时是在重命名,
                                        分配一个名称映射对象,其中包含他们的旧的和新的名字到hNameMappings成员。
                                        如果不再使用,需要用SHFreeNameMappings释放。
                FOF_WANTNUKEWARNING   当一个文件被永久删除的时候,弹出警告框
                
    BOOL fAnyOperationsAborted;               是否可被中断
    LPVOID hNameMappings;                     文件映射名字,可在其它 Shell 函数中使用
    PCTSTR lpszProgressTitle;                 只在 FOF_SIMPLEPROGRESS 时,指定对话框的标题
    } SHFILEOPSTRUCT, *LPSHFILEOPSTRUCT;
复制代码

 

复制文件 

复制代码
    SHFILEOPSTRUCT shfo;
    ZeroMemory(&shfo, sizeof(shfo));
    shfo.hwnd = HWND_DESKTOP;
    shfo.fFlags =  FOF_SIMPLEPROGRESS;
    shfo.wFunc = FO_COPY; //复制
    shfo.pFrom = _T("D:\\Test.txt");
    shfo.pTo = _T("E:\\");

    int n= SHFileOperation(&shfo);//文件操作
    /*
    参数: _Inout_ LPSHFILEOPSTRUCT lpFileOp   指向SHFILEOPSTRUCT结构的指针
    返回值:返回0成功,


    */

    if (0 != n)
    {
        AfxMessageBox(_T("复制文件出错,请检查"));
        return;
    }
复制代码

 

删除文件 

复制代码
    
    SHFILEOPSTRUCT shfo;
    ZeroMemory(&shfo, sizeof(shfo));
    shfo.hwnd = HWND_DESKTOP;
    shfo.fFlags = FOF_ALLOWUNDO;   //允许放回回收站;
    shfo.wFunc = FO_DELETE;//删除操作
    shfo.pFrom = _T("D:\\Test.txt");
    shfo.pTo = NULL;  //一定要是NULL

    int n = SHFileOperation(&shfo);//文件操作
    /*
    参数: _Inout_ LPSHFILEOPSTRUCT lpFileOp   指向SHFILEOPSTRUCT结构的指针
    返回值:返回0成功,


    */

    if (0 != n)
    {
        AfxMessageBox(_T("复制文件出错,请检查"));
        return;
    }
复制代码

 

 

 

 

 

posted @   天子骄龙  阅读(314)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
历史上的今天:
2019-08-01 pyqt5-动画组QAnimationGroup
点击右上角即可分享
微信分享提示

目录导航