如何在VC ++中复制文件夹?

时间:2010-06-04 10:48:17

标签: visual-c++

如何在VC ++中将文件夹从一个驱动器复制到另一个驱动器......?

我到目前为止

   String^ SourcePath = Directory::GetCurrentDirectory();
   String^ DestinationPath = "c:\\Test";
   CString s(SourcePath) ;
   CString d(DestinationPath);
   Directory::CreateDirectory(DestinationPath);

 SHFILEOPSTRUCT*  pFileStruct = new SHFILEOPSTRUCT;
 ZeroMemory(pFileStruct, sizeof(SHFILEOPSTRUCT)); 
 pFileStruct->hwnd  = NULL;
 pFileStruct->wFunc = FO_COPY;
 pFileStruct->pFrom = (LPCWSTR)s;//"D:\test_documents\test1.doc"; 
 pFileStruct->pTo =  (LPCWSTR)d; 
 pFileStruct->fFlags = FOF_SILENT  | FOF_NOCONFIRMATION | FOF_NOCONFIRMMKDIR ; 
 bool i = pFileStruct->fAnyOperationsAborted ;
 int status = SHFileOperation(pFileStruct);

 if(status == 0)
 {
           return true;
 }
 return false;

状态显示为2而不是零,有人可以告诉我为什么......?

1 个答案:

答案 0 :(得分:2)

通常,String ^指向托管字符串对象。必须使用指向非托管wchar_t的指针填充SHFILOPSSTRUCT。所以你必须固定字符串并进行转换。您尝试使用CString类作为转换帮助程序。

使用PtrToStringChars来获取pTo和pFrom中的有效字符串: http://msdn.microsoft.com/en-us/library/d1ae6tz5(VS.80).aspx

操作不需要读取fAnyOperationsAborted成员。

相关问题