2010-06-04 5 views
0

Comment copier un dossier d'un lecteur vers un autre lecteur dans VC++ ...?Comment copier un dossier dans VC++?

Je suis venu jusqu'ici

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; 

l'état montre 2 au lieu de zéro, quelqu'un peut me dire pourquoi ..?

Répondre

2

Généralement, une chaîne^pointe vers un objet de chaîne géré. SHFILOPSSTRUCT doit être rempli avec des pointeurs sur wchar_t non géré. Vous devez donc épingler les cordes et convertir. Vous avez essayé d'utiliser la classe CString en tant qu'aide de conversion.

Utilisez les PtrToStringChars plutôt que pour obtenir les chaînes valides dans pPour et pFrom: http://msdn.microsoft.com/en-us/library/d1ae6tz5(VS.80).aspx

La lecture du membre fAnyOperationsAborted n'est pas nécessaire pour l'opération.

+0

C'est cool, je l'ai eu, merci beaucoup .. !! – pradeep

Questions connexes