首页 > 其他分享 >VC 移动,复制,删除文件(SHFileOperation)时显示动画

VC 移动,复制,删除文件(SHFileOperation)时显示动画

时间:2023-09-19 10:06:31浏览次数:57  
标签:pTo 动画 VC PID char 文件夹 SHFileOperation FileOp pFrom


比较乱 凑合看吧

总结一下SHFileOperation的用法,希望对大家有用

//删除文件或者文件夹bool DeleteFile(char * lpszPath)
 {
 SHFILEOPSTRUCT FileOp={0};
 FileOp.fFlags = FOF_ALLOWUNDO |   //允许放回回收站
       FOF_NOCONFIRMATION; //不出现确认对话框
 FileOp.pFrom = lpszPath;
 FileOp.pTo = NULL;      //一定要是NULL
 FileOp.wFunc = FO_DELETE;    //删除操作
 return SHFileOperation(&FileOp) == 0;
 } //复制文件或文件夹bool CopyFile(char *pTo,char *pFrom)
 {
 SHFILEOPSTRUCT FileOp={0};
 FileOp.fFlags = FOF_NOCONFIRMATION|   //不出现确认对话框
       FOF_NOCONFIRMMKDIR ; //需要时直接创建一个文件夹,不需用户确定
 FileOp.pFrom = pFrom;
 FileOp.pTo = pTo;
 FileOp.wFunc = FO_COPY;
 return SHFileOperation(&FileOp) == 0;
 } //移动文件或文件夹
 bool MoveFile(char *pTo,char *pFrom)
 {
 SHFILEOPSTRUCT FileOp={0};
 FileOp.fFlags = FOF_NOCONFIRMATION|   //不出现确认对话框
       FOF_NOCONFIRMMKDIR ; //需要时直接创建一个文件夹,不需用户确定
 FileOp.pFrom = pFrom;
 FileOp.pTo = pTo;
 FileOp.wFunc = FO_MOVE;
 return SHFileOperation(&FileOp) == 0;   
 } 
//从命名文件或文件夹
 bool ReNameFile(char *pTo,char *pFrom)
 {
 SHFILEOPSTRUCT FileOp={0};
 FileOp.fFlags = FOF_NOCONFIRMATION;   //不出现确认对话框
 FileOp.pFrom = pFrom;
 FileOp.pTo = pTo;
 FileOp.wFunc = FO_RENAME;
 return SHFileOperation(&FileOp) == 0;   
 }

应用举例:
DeleteFile("d:\\PID\0\0");    //删除一个文件夹
DeleteFile("d:\\PID.dsp\0d:\\PID.dsw\0\0"); //删除多个文件
CopyFile("d:\0\0","D:\\MyProjects\\临时程序\0\0");    //把"临时程序"文件夹放到d盘下面
CopyFile("d:\0\0","D:\\MyProjects\\临时程序\\PID.dsp\0D:\\MyProjects\\临时程序\\PID.dsw\0"); //把PID.dsp和PID.dsw俩个文件放到d盘下面
ReNameFile("d:\\NewName","d:\\PID\0\0"); \\把PID文件夹从命名为NewName
注意:,如果你想把"D:\\MyProjects\\临时程序\0\0"的文件夹复制到D盘下,并从命名为NewName,应该这样
CopyFile("d:\\NewName\0\0","D:\\MyProjects\\临时程序\\*.*\0\0"); //把"临时程序"文件夹复制到d盘下并从命名为"NewName"  


下面这个类方便你复制多个文件或文件夹,仅作参考

//连接多个路径的类
 class JOINFILEPATH
 {
 private:
 int pos;
 char* MultipleFilePath;
 public:
 JOINFILEPATH()
 {
    pos=0;
    MultipleFilePath=new char[MAX_PATH*10];
    memset(MultipleFilePath,0,MAX_PATH*10);
 }
 ~JOINFILEPATH() { delete []MultipleFilePath; }
 void join(char *FilePath)
 {
    while(*FilePath!='\0')
     MultipleFilePath[pos++]=*FilePath++;
    pos++;
 }
 char * GetMultipleFilePath() {return MultipleFilePath;}
 }; //应用举例:
 JOINFILEPATH FilePath;
 FilePath.join("D:\\MyProjects\\临时程序\\PID\\PID.dsp");
 FilePath.join("D:\\MyProjects\\临时程序\\PID\\PID.dsw");
 CopyFile("d:\0\0",FilePath.GetMultipleFilePath());

1 pFrom和pTo最好以\0\0结尾(把存放路径的字符串初始化为0),不然有可能会出错,中间的每一个路径用\0隔开
2 pFrom所指向的文件或文件夹(可以多个)会被复制或移动到pTo所指向的文件夹下面(假如文件夹不存在会询问是否创建,当然你也可以选择直接创建)

参数详解:

Typedef struct _ShFILEOPSTRUCT
 {
 HWND hWnd; //消息发送的窗口句柄;
 UINT wFunc; //操作类型
 LPCSTR pFrom; //源文件及路径
 LPCSTR pTo; //目标文件及路径
 FILEOP_FLAGS fFlags; //操作与确认标志
 BOOL fAnyOperationsAborted; //操作选择位
 LPVOID hNameMappings; //文件映射
 LPCSTR lpszProgressTitle; //文件操作进度窗口标题
 }SHFILEOPSTRUCT, FAR * LPSHFILEOPSTRUCT;

  在这个结构中,hWnd是指向发送消息的窗口句柄,pFrom与pTo是进行文件操作的源文件名和目标文件名,它包含文件的路径,对应单个文件的路径字符串,或对于多个文件,必须以NULL作为字符串的结尾或文件路径名之间的间隔,否则在程序运行的时候会发生错误。另外,pFrom和pTo都支持通配符*和?,这大大方便了开发人员的使用。例如,源文件或目录有两个,则应是:char pFrom[]="d:\\Test1\0d:\\Text.txt\0",它表示对要D:盘Test目录下的所有文件和D:盘上的Text.txt文件进行操作。字符串中的"\"是C语言中的'\'的转义符,'\0'则是NULL。wFunc 是结构中的一个非常重要的成员,它代表着函数将要进行的操作类型,它的取值为如下:

  FO_COPY: 拷贝文件pFrom到pTo 的指定位置。

  FO_RENAME: 将pFrom的文件名更名为pTo的文件名。

标签:pTo,动画,VC,PID,char,文件夹,SHFileOperation,FileOp,pFrom
From: https://blog.51cto.com/u_15487030/7521726

相关文章

  • SQLite在VC下的使用
    一、SQLite简介SQLite是用C语言编写的开源数据库,主要用于嵌入式,你也可以把它集成在自己的桌面程序中,也有人将其替代Access,用作后台数据库。SQLite支持多数SQL92标准,例如:索引、限制、触发和查看支持。支持NULL、INTEGER、REAL、TEXT和BLOB数据类型,支持事务。二、下载SQLi......
  • 将vcf文件转成孟德尔随机化分析格式
    以https://gwas.mrcieu.ac.uk/datasets/ukb-b-7330/为例:原始文件形如:转换代码library(vcfR)getwd()a_data=read.vcfR('../ukb-b-7330.vcf.gz')str(a_data)head(a_data$meta,12)head(a_data@fix)head(a_data@gt)fix=as.data.frame(a_data@fix[,(1:5)])gt=as......
  • Spring,SpringMVC,SpringBoot,SpringCloud有什么区别?
    简单介绍Spring是一个轻量级的控制反转(IoC)和面向切面(AOP)的容器框架。Spring使你能够编写更干净、更可管理、并且更易于测试的代码。SpringMVC是Spring的一个模块,一个web框架。通过DispatcherServlet,ModelAndView和ViewResolver,开发web应用变得很容易。主要针对的......
  • VCSA证书过期时当存在第三方的插件或解决方案证书更新报错问题处理
    VCSA证书过期时当存在第三方的解决方案证书更新报错问题处理  测试环境存在Zerto时已经通过验证TaskSteps:SSHtoPSCRuntheCertificateManagertoolfrom /usr/lib/vmware-vmca/bin/certificate-managerSelecttoReplaceMachineSSLCertificatewithCustomSig......
  • .NET MVC 安全漏洞系列
    一、XSS漏洞定义XSS攻击全称跨站脚本攻击,它允许恶意web用户将代码(如:html代码)植入到页面上,当访问到该页面时,嵌入到页面的html代码会自动执行,从而达到恶意攻击的目的。二、解决方案1.新建立一个XSSHelper帮助类publicstaticclassXSSHelper{///<summa......
  • VIVADO VCS VERDI联合仿真
    ./tb_test.shverdi-ffilelist.f-ssf*.fsdb&......
  • vCenter 6.X无法提取请求的数据。有关详细信息,请查看 vSphere Client 日志
    vCenter6.X无法提取请求的数据。有关详细信息,请查看vSphereClient日志解释:根本原因是证书不一致,但是vc的证书和vsan他们不共用一个证书,所以需要保证集群证书的统一,当时由于vc的证书到期后,只替换了vc的sts证书,在替换了STS证书之后,可能会导致计算机SSL证书与该vCenterServer......
  • WPF动画入门教程
    WPF动画入门教程 WindowsPresentationFoundation(WPF)是一种用于创建Windows客户端应用程序的UI框架。它让我们能够创建丰富的图形界面,包括各种各样的动画效果。接下来,我们将介绍如何在WPF中创建简单的动画。文章最后将给出源码,源码包括文章中的动画和一个水印按钮,一个简......
  • 【小沐学Unity3d】3ds Max 骨骼动画制作(蒙皮修改器skin)
    1、简介“蒙皮”修改器是一种骨骼变形工具,主要设计用于通过另一个对象对一个对象进行变形来创建角色动画。可使用骨骼、样条线和其他对象变形网格、面片和NURBS对象。如果将“蒙皮”修改器应用到网格,然后使用修改器指定骨骼,则每个骨骼都将收到一个胶囊形状的“封套”。这些封......
  • ASP.NET MVC5多语言切换快速实现方案
    实现动态切换语言,Demo做了三种语言库可以切换,包括资源文件的定义,实体对象属性设置,后台代码Controller,IAuthorizationFilter,HtmlHelper的实现,做法比较简单易学易用,配合我之前发布的# MVCScaffoldingSmartCode-Engine更新 模板中新增了多语言资源文件的生成功能,发现......