VC驿站

 找回密码
 加入驿站

QQ登录

只需一步,快速开始

搜索
查看: 931|回复: 4

[求助] 关于文件复制求指导

[复制链接]
99_avatar_middle
online_vip 发表于 2015-11-15 08:14:58 | 显示全部楼层 |阅读模式
3驿站币
void MyCopyFile(LPCTSTR lpCurFile, LPCTSTR lpDesFile)
{
        SHFILEOPSTRUCT lpFileStruct;
        lpFileStruct.hwnd = NULL;
        lpFileStruct.fFlags = ~FOF_SILENT | FOF_NOCONFIRMATION | FOF_NOCONFIRMMKDIR | FOF_FILESONLY;
        lpFileStruct.fAnyOperationsAborted = TRUE;
        lpFileStruct.hNameMappings = NULL;
        lpFileStruct.lpszProgressTitle = _T("复制文件");
        lpFileStruct.pFrom = _T("c:\\text\0");
        lpFileStruct.pTo = lpDesFile;
        lpFileStruct.wFunc = FO_COPY;
        SHFileOperation(&lpFileStruct);
}

当路径后边追加\0

最佳答案

查看完整内容

使用SHFileOperation 复制文件夹 SHFileOperation MSDN官方说明:http://msdn.microsoft.com/en-us/library/windows/desktop/bb762164(v=vs.85).aspx




上一篇:如何枚举可见的顶级窗口?
下一篇:visual studio2015怎么没有stdio.h头文件呢?
51_avatar_middle
online_admins 发表于 2015-11-15 08:14:59 | 显示全部楼层
使用SHFileOperation 复制文件夹

  1. #include <Shellapi.h>
  2. #pragma comment(lib, "Shell32.lib")
复制代码

  1. BOOL CopyFolder(LPCTSTR lpszFromPath, LPCTSTR lpszToPath)
  2. {
  3.     SHFILEOPSTRUCT shellFileOp;
  4.         PTSTR szSrc, szDst;
  5.         BOOL bRet = FALSE;
  6.         int iSrcLen, iDstLen;
  7.        
  8.         iSrcLen = lstrlen(lpszFromPath);
  9.         iDstLen = lstrlen(lpszToPath);
  10.        
  11.         szSrc = static_cast<PTSTR>(::GlobalAlloc(GPTR, lstrlen(lpszFromPath) + 2));
  12.         szDst = static_cast<PTSTR>(::GlobalAlloc(GPTR, lstrlen(lpszToPath) + 2));
  13.         if (szSrc && szDst) {
  14.                 lstrcpy(szSrc, lpszFromPath);
  15.                 szSrc[iSrcLen] = '\0';
  16.                 szSrc[iSrcLen + 1] = '\0';
  17.                
  18.                 lstrcpy(szDst, lpszToPath);
  19.                 szDst[iDstLen] = '\0';
  20.                 szDst[iDstLen + 1] = '\0';
  21.                
  22.                 ZeroMemory((void *)&shellFileOp, sizeof(SHFILEOPSTRUCT));
  23.                 shellFileOp.fFlags = FOF_NOCONFIRMATION |FOF_NOCONFIRMMKDIR;
  24.                 shellFileOp.hNameMappings = NULL;
  25.                 shellFileOp.hwnd = NULL;
  26.                 shellFileOp.lpszProgressTitle = NULL;
  27.                 shellFileOp.pFrom = szSrc;
  28.                 shellFileOp.pTo = szDst;
  29.                 shellFileOp.wFunc = FO_COPY;
  30.                 bRet = SHFileOperation(&shellFileOp) == 0;
  31.         }
  32.        
  33.         if (szSrc){
  34.                 ::GlobalFree(szSrc);
  35.         }
  36.        
  37.         if (szDst){
  38.                 ::GlobalFree(szDst);
  39.         }
  40.         return bRet;
  41. }
复制代码


SHFileOperation MSDN官方说明:http://msdn.microsoft.com/en-us/ ... 62164(v=vs.85).aspx
99_avatar_middle
ico_lz  楼主| 发表于 2015-11-15 08:15:52 | 显示全部楼层
当路径后边追加\0 可以复制目录下的所有文件,  但是格式化后的路径带不了\0  那么我该怎么写才能吧传入的路径带带上\0
99_avatar_middle
ico_lz  楼主| 发表于 2015-11-20 08:59:14 | 显示全部楼层
谢了老大
26_avatar_middle
在线会员 发表于 2016-12-29 11:33:02 | 显示全部楼层
if (szDst){                 ::GlobalFree(szDst);         }到这儿总会报错的
您需要登录后才可以回帖 登录 | 加入驿站 qq_login

本版积分规则

关闭

站长提醒上一条 /2 下一条

QQ|小黑屋|手机版|VC驿站 ( 辽ICP备09019393号tongdun|网站地图wx_jqr

GMT+8, 2019-3-21 14:55

Powered by Discuz! X3.4

© 2009-2019 cctry.com

快速回复 返回顶部 返回列表