2010-06-04 92 views
0

如何將文件夾從一個驅動器複製到VC++中的其他驅動器...?如何在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而不是零,可以有一個人告訴我爲什麼......?

回答

2

通常一個String ^指向一個託管字符串對象。 SHFILOPSSTRUCT必須填充指向非託管wchar_t的指針。所以你必須固定弦和轉換。您試圖使用CString類作爲轉換助手。

使用PtrToStringChars而不是得到有效的字符串PTO和pFrom中: http://msdn.microsoft.com/en-us/library/d1ae6tz5(VS.80).aspx

的fAnyOperationsAborted成員的讀取不需要操作。

+0

這很酷,我明白了,非常感謝你..! – pradeep 2010-06-04 11:17:25

相關問題