• 注册
  • 关于作者
    企业认证:趣记站长
    关注 6 粉丝 4 喜欢 9 内容 992
    江西省·南昌市
    聊天 送礼
    • 查看作者
    • 在拷贝、删除文件时显示飞行的文件夹动画

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

      //复制SOURCE.TXT到DEST.TXT,FALSE参数告诉windows如果文件DEST.TXT

      //已经存在则复制失败,CopyFile的返回值是BOOL类型

      if( CopyFile("C:\\SOURCE.TXT","C:\\DEST.TXT", FALSE) == FALSE)

      Application->MessageBox("CopyFile failed", "Error", MB_OK);

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

      MoveFile("C:\\SOURCE.TXT","C:\\WINDOWS\\TEMP\\DEST.TXT");

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

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

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

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

      #include <shellapi.h>

      // 复制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\\temp\\*.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,文件将送到回收站,

      BCB编写DLL终极手册
      用C++ Builder实现VFP数据库开发,用BCB开发有身份认证功能的Email程序,BCB动态生成30个按钮对象,BCB不让应用程序显示在任务栏上的方法,利用C++Builder自定义Windows窗体“系统菜单”,用程序实现文件的关联,数字小键盘指法练习,用C++ Builder开发多层数据库应用程序,在C++ Builder6上使用Boost正则表达式库,C++Builder使用经验谈,用C++ Builder对图像进行特殊效果处理,CBuilder中帮助文件的连接及显示讨论,BCB客户端tuxedo开发实例,在BCB下使用GExperts的Debug功能,BCB编写DLL终极手册,在拷贝、删除文件时显示飞行的文件夹动画,用BCB实现超星格式转换为BMP格式,在C++Builder中使用Compress Html Help,在bcb里实现像Winamp那样具有吸附效果的磁性窗口,利用BCB巧建WEB浏览器
      C++ Builder

      否则它们将被删除.

      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文件.

      在BCB下使用GExperts的Debug功能
      用C++ Builder实现VFP数据库开发,用BCB开发有身份认证功能的Email程序,BCB动态生成30个按钮对象,BCB不让应用程序显示在任务栏上的方法,利用C++Builder自定义Windows窗体“系统菜单”,用程序实现文件的关联,数字小键盘指法练习,用C++ Builder开发多层数据库应用程序,在C++ Builder6上使用Boost正则表达式库,C++Builder使用经验谈,用C++ Builder对图像进行特殊效果处理,CBuilder中帮助文件的连接及显示讨论,BCB客户端tuxedo开发实例,在BCB下使用GExperts的Debug功能,BCB编写DLL终极手册,在拷贝、删除文件时显示飞行的文件夹动画,用BCB实现超星格式转换为BMP格式,在C++Builder中使用Compress Html Help,在bcb里实现像Winamp那样具有吸附效果的磁性窗口,利用BCB巧建WEB浏览器
      C++ Builder

    • 0
    • 0
    • 0
    • 48
    • 单栏布局 侧栏位置: