您好,欢迎来到微智科技网。
搜索
您的当前位置:首页在拷贝

在拷贝

来源:微智科技网
在拷贝、删除文件时显示飞行的文件夹动画

(加入日期:2003-6-19 点击数:6013)

【对此文发表评论】 【编程爱好者论坛】 【保存文章至硬盘】 【打印文章】

可以很容易地调用API函数CopyFil

e, DeleteFile, 以及MoveFile来复制、删除、移动文件,这些功能相当容易使用,但是他们不显示飞行文件夹动画。下面是每一个API的例子。

//复制SOURCE.TXT到DEST.TXT,FALSE参数告诉windows如果文件DEST.TXT //已经存在则复制失败,CopyFile的返回值是BOOL类型

if( CopyFile(\"C:\\\\SOURCE.TXT\Application->MessageBox(\"CopyFile failed\

//如果移动或删除失败则返回FALSE

MoveFile(\"C:\\\\SOURCE.TXT\DeleteFile(\"C:\\\\SOURCE.TXT\");

这些功能很容易使用,但是不幸但是他们不显示飞行文件夹动画。为了显示动画,你必须使用SHFileOperation 这个API函数。下面是用SHFileOperation完成上面的操作的例子,注意复制和移动操作一定要指定目标文件夹。

//确认你包含了头文件SHELLAPI.H

//如果你好奇的话,这个文件地位置在INCLUDE\\WIN32目录下 #include

// 复制SOURCE.TXT到DEST.TXT; char *From = \"C:\\\\SOURCE.TXT\\0\"; char *To = \"C:\\\\DEST.TXT\\0\";

SHFILEOPSTRUCT op;

ZeroMemory(&op, sizeof(op));

op.hwnd = Handle; // 主窗体或应用程序的句柄 op.wFunc = FO_COPY; op.pFrom = From; op.pTo = To; op.fFlags= 0;

SHFileOperation( &op);

// 移动SOURCE.TXT到windows的临时目录 char *From = \"C:\\\\SOURCE.TXT\\0\"; char *To = \"C:\\\\WINDOWS\\\\TEMP\\0\"; SHFILEOPSTRUCT op;

ZeroMemory(&op, sizeof(op)); op.hwnd = Handle; op.wFunc = FO_MOVE; op.pFrom = From; op.pTo = To; op.fFlags= 0;

SHFileOperation( &op);

//把所有的临时文件删除到回收站

char *File = \"C:\\\\windows\\\emp\\\\*.TMP\\0\"; SHFILEOPSTRUCT op;

ZeroMemory(&op, sizeof(op)); op.hwnd = Handle; op.wFunc = FO_DELETE; op.pFrom = File;

op.fFlags= FOF_ALLOWUNDO; SHFileOperation( &op);

// 复制根目录所有的文本文件到临时目录。 char *From = \"C:\\\\*.TXT\\0\"; char *To = \"C:\\\\WINDOWS\\\\TEMP\\0\"; SHFILEOPSTRUCT op;

ZeroMemory(&op, sizeof(op)); op.hwnd = Handle; op.wFunc = FO_COPY; op.pFrom = From; op.pTo = To; op.fFlags= 0;

SHFileOperation( &op); 注意:

1:当你指定FO_DELETE操作的时候,如果fFlags包含FOF_ALLOWUNDO,文件将送到回收站,否则它们将被删除.

2:op结构的项目pFrom和pTo是字符指针,而不是数组.它们必须指向一个字符串,因为结构不含有任何存储空间,不能这样做:

op.pFrom = \"C:\\\\*.TXT\"; op.pTo = \"C:\\\\TEMP\";

3:在文件名字符串中注意到额外的终止符0(在字符串中的'\\0')。MSDN文档表明pTo和pFrom字符串一定是双重零结束。

4:pFrom和pTo指向的内存可以包含多个字符串,字符串之间用0分隔,最后也要用双重0结束,下面是一个例子:

char *From = \"C:\\\\*.txt\\0C:\\\\*.log\\0C:\\\\*.tmp\\0\"; op.pFrom = From;

//也可以用空白分隔

char *From = \"C:\\\\*.txt\\0\" \"C:\\\\*.log\\0\" \"C:\\\\*.tmp\\0\";

5:当复制或者移动文件的时候,在fFlags参数中包含FOF_RENAMEONCOLLISION将阻止函数改写现存的文件,shell将建立名字叫做“复件 原文件名”的复制品(资源管理器就是这样做的).

6:你能也指定FO_RENAME作为wFunc参数.fFlags参数能包含很多其它高级方式,更多信息请参阅WIN32.HLP文件.

因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- 7swz.com 版权所有 赣ICP备2024042798号-8

违法及侵权请联系:TEL:199 18 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务