如何在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而不是零,有人可以告诉我为什么......?
答案 0 :(得分:2)
通常,String ^指向托管字符串对象。必须使用指向非托管wchar_t的指针填充SHFILOPSSTRUCT。所以你必须固定字符串并进行转换。您尝试使用CString类作为转换帮助程序。
使用PtrToStringChars来获取pTo和pFrom中的有效字符串: http://msdn.microsoft.com/en-us/library/d1ae6tz5(VS.80).aspx
操作不需要读取fAnyOperationsAborted成员。