Как скопировать папку в VC ++? - PullRequest
0 голосов
/ 04 июня 2010

Как скопировать папку с одного диска на другой диск в 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 Ответ

2 голосов
/ 04 июня 2010

Обычно строка ^ указывает на управляемый строковый объект. SHFILOPSSTRUCT должен быть заполнен указателями на неуправляемый wchar_t. Таким образом, вы должны закрепить строки и преобразовать. Вы пытались использовать класс CString в качестве помощника преобразования.

Вместо этого используйте PtrToStringChars, чтобы получить действительные строки в pTo и pFrom: http://msdn.microsoft.com/en-us/library/d1ae6tz5(VS.80).aspx

Для операции чтение элемента fAnyOperationsAborted не требуется.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...