我要复制一个文件夹,该文件夹下还有子文件夹和文件,我要用SHFileOperation和SHFILEOPSTRUCT,该怎么用?
CString from=...;
CString to=...;
//在程序里from 和to已经赋值了的,这里就不给出了
SHFILEOPSTRUCT sfo;
sfo.hwnd=NULL;
sfo.wFunc=FO_COPY;
sfo.pFrom=from;
sfo.pTo=to;
fo.fFlags=FOF_SILENT|FOF_NOCONFIRMATION|FOF_NOCONFIRMMKDIR;
sfo.fAnyOperationsAborted=false;
SHFileOperation(&sfo);
上面这段代码编译没错,运行时不会出现错误,但是没结果,就像没有运行一样,请问我应该如何修改?
CString from=...;
CString to=...;
//在程序里from 和to已经赋值了的,这里就不给出了
SHFILEOPSTRUCT sfo;
sfo.hwnd=NULL;
sfo.wFunc=FO_COPY;
sfo.pFrom=from;
sfo.pTo=to;
fo.fFlags=FOF_SILENT|FOF_NOCONFIRMATION|FOF_NOCONFIRMMKDIR;
sfo.fAnyOperationsAborted=false;
SHFileOperation(&sfo);
上面这段代码编译没错,运行时不会出现错误,但是没结果,就像没有运行一样,请问我应该如何修改?
LPCSTR szTo;szFrom="f:\lq";//要不要这么写"f:\lq\0\0"?
szTo="f:\lq1";SHFILEOPSTRUCT sfo;
ZeroMemory(&sfo, sizeof(SHFILEOPSTRUCT));
sfo.hwnd=NULL;
sfo.wFunc=FO_COPY;
sfo.pFrom=szFrom;
sfo.pTo=szTo;
sfo.fFlags=FOF_SILENT|FOF_NOCONFIRMATION|FOF_NOCONFIRMMKDIR;
//sfo.fFlags=FOF_MULTIDESTFILES|FOF_NOCONFIRMMKDIR|FOF_NOCONFIRMATION;//如果用这条语句的话程序运行时会有磁盘无法读的错误,程序将中止.
sfo.fAnyOperationsAborted=true;
SHFileOperation(&sfo);上面这段代码运行后并没有复制文件夹.要不要复制前先创建好文件夹lq1,先这么做好像也没有用,我试过了.
高手能解答一下啊,急!
szTo="f:\\lq1\0";
试试.....................
我直接这样写
sfo.pFrom="f:\\lq\0";
sfo.pTo="f:\\lq1\0";
就没问题了,也就是说
sfo.pFrom=szFrom;
sfo.pTo=szTo;
这里有问题了那么再往上就应该是
LPCSTR szFrom;
LPCSTR szTo;szFrom="f:\lq";//要不要这么写"f:\lq\0\0"?
szTo="f:\lq1";
的问题了,szFrom 和szTo是不是要定义为char*类型呢?
wchar_t * szDestinationPath = _T("J:\\testTo\\\0"); SHFILEOPSTRUCT FileOP; //SHFILEOPSTRUCT声明
ZeroMemory(&FileOP, sizeof(FileOP)); //SHFILEOPSTRUCT成员赋值
FileOP.hwnd = AfxGetApp()->m_pMainWnd->m_hWnd;
FileOP.fFlags = FOF_SILENT;
FileOP.wFunc = FO_COPY;
FileOP.pFrom = szSourcePath;
FileOP.pTo = szDestinationPath;
FileOP.fAnyOperationsAborted = FALSE; //
FileOP.hNameMappings = NULL;
FileOP.lpszProgressTitle = NULL;
//SHFILEOPSTRUCT成员赋值结束 int msg = SHFileOperation(&FileOP);//执行复制操作 if(msg==0)
AfxMessageBox(_T("复制完成")); else
AfxMessageBox(_T("复制失败!!!"));