注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

Kandy

长风破浪会有时,直挂云帆济沧海!

 
 
 

日志

 
 

【转】VC++删除非空文件夹  

2009-09-08 10:51:50|  分类: MFC学习 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

要删除文件夹,我们可以用到SHFILEOPSTRUCT这种结构体,利用该结构体可以删除空文件夹和非空文件夹。

typedef struct _SHFILEOPSTRUCT{
    HWND hwnd;
    UINT wFunc;
    LPCTSTR pFrom;
    LPCTSTR pTo;
    FILEOP_FLAGS fFlags;
    BOOL fAnyOperationsAborted;
    LPVOID hNameMappings;
    LPCSTR lpszProgressTitle;
} SHFILEOPSTRUCT, *LPSHFILEOPSTRUCT;

第一个参数:hwnd指向当前窗口的句柄!

第二参数:wFunc标识对文件相关的操作!

FO_COPY
Copy the files specified in the pFrom member to the location specified in the pTo member.
FO_DELETE
Delete the files specified in pFrom.
FO_MOVE
Move the files specified in pFrom to the location specified in pTo.
FO_RENAME
Rename the file specified in pFrom. You cannot use this flag to rename multiple files with a single function call. Use FO_MOVE instead.

pFrom: 指定资源的文件名,该文件名不能为空.

pTo:文件名相关的指针,该参数如果没有使用的话必须设为NULL, 其他相关的内容可以参照MSDN.

fFlags: 一些控制风格的操作一般我们都是选择FOF_NOCONFIRMATION或则FOF_SILENT删除到回收站中去!

然后使用SHFileOperation来配合结构体的使用.

下面举一例子来说明:

 Cstring FilePathSave=_T("F:\\孙鑫VC++\\BMP\0")

TCHAR strChar[1024]={0};
strcpy(strChar,FilePathSave);

SHFILEOPSTRUCTA fpo;
 fpo.hwnd=NULL;

fpo.pFrom=strChar;

fpo.wFunc=FO_DELETE;

fpo.pTo=NULL;

fpo.fFlags=FOF_SILENT|FOF_NOCONFIRMATION;

SHFileOperation(&fpo);

要记住第二个参数fpo.pFrom的参数要在相关的文件后面补一个\0符号,不然操作会出错!

因为Cstring类型的字符串系统不会为其后添加\0,转为TCHAR形式后需自己手动添加\0

也可把程序这样修改:

    TCHAR *strChar;
    strChar=FilePathSave.GetBuffer(FilePathSave.GetLength()+1);
    strChar[_tcslen(strChar)+1]=0;
    SHFILEOPSTRUCTA fpo;
    fpo.hwnd=NULL;
    fpo.pFrom=strChar;
    fpo.wFunc=FO_DELETE;
    fpo.pTo=NULL;
    fpo.fFlags=FOF_SILENT|FOF_NOCONFIRMATION;
    SHFileOperation(&fpo);

  其中第三行代码是将TCHAR 指针最后一位加上一个\0 ;

  评论这张
 
阅读(868)| 评论(1)
推荐 转载

历史上的今天

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2018