C++學習之:複製和粘貼文件/文件夾

 從剪貼板上獲得要複製/剪貼的文件路徑之後,如何完成文件/文件夾的粘貼呢。下面列出了兩個函數用來完成這些功能

  1. //複製的粘貼
  2. DWORD VrvCopyFile( LPCWSTR lpSrc, LPCWSTR lpDst ) 
  3.     DWORD   dwError         =   0; 
  4.     CString strFiles = lpSrc; 
  5.     CString strFilePath = _T(""); 
  6.     int idx= 0; 
  7.     while (strFiles.Find('#',idx) != -1) 
  8.     { 
  9.         int y = strFiles.Find('#',idx); 
  10.         strFilePath = strFiles.Mid(idx,y - idx); 
  11.         TCHAR szFile[MAX_PATH] = {0}; 
  12.         lstrcpy(szFile,strFilePath.GetBuffer()); 
  13.         strFilePath.ReleaseBuffer(); 
  14.         idx = strFiles.Find('#',idx); 
  15.         idx++; 
  16.         SHFILEOPSTRUCT shFileOp = {0}; 
  17.         shFileOp.fFlags = FOF_NOCONFIRMATION | FOF_NOCONFIRMMKDIR; 
  18.         shFileOp.pFrom = szFile; 
  19.         shFileOp.pTo = lpDst; 
  20.         shFileOp.wFunc = FO_COPY; 
  21.         dwError = SHFileOperation(&shFileOp); 
  22.     } 
  23.      
  24.     return dwError; 
  25.  
  26. //剪貼的粘貼
  27. DWORD VrvMoveFile(LPCWSTR lpSrc, LPCWSTR lpDst) 
  28.     DWORD   dwError         =   0; 
  29.     CString strFiles = lpSrc; 
  30.     CString strFilePath = _T(""); 
  31.     int idx= 0; 
  32.     while (strFiles.Find('#',idx) != -1) 
  33.     { 
  34.         int y = strFiles.Find('#',idx); 
  35.         strFilePath = strFiles.Mid(idx,y - idx); 
  36.         TCHAR szFile[MAX_PATH] = {0}; 
  37.         lstrcpy(szFile,strFilePath.GetBuffer()); 
  38.         strFilePath.ReleaseBuffer(); 
  39.         idx = strFiles.Find('#',idx); 
  40.         idx++; 
  41.         SHFILEOPSTRUCT shFileOp = {0}; 
  42.         shFileOp.fFlags = FOF_NOCONFIRMATION | FOF_NOCONFIRMMKDIR; 
  43.         shFileOp.pFrom = szFile; 
  44.         shFileOp.pTo = lpDst; 
  45.         shFileOp.wFunc = FO_MOVE; 
  46.         dwError = SHFileOperation(&shFileOp); 
  47.     } 
  48.  
  49.     return dwError; 

源路徑存放了多個文件路徑,使用#分開,每個文件/文件夾逐個粘貼。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章