CString SrcDir,DesDir; //源文件目录,目标文件目录
char src[Max_Path];
char des[Max_Path];
//下面这段可用在对列表控件数据源操作的循环中
memset(src,0,Max_Path);
memset(des,0,Max_Path);
FileOp.hwnd = GetListCtrl().m_hWnd;
CString strSrc = SrcDir + "//" + GetListCtrl().GetItemText(nSelected-index,0);//源文件名
CString strDes = DesDir + "//" + GetListCtrl().GetItemText(nSelected-index,0);//目标文件名
strcpy(src,(LPCTSTR)strSrc);
strcpy(des,(LPCTSTR)strDes);
FileOp.pFrom = src;
FileOp.pTo = des;
FileOp.wFunc = FO_MOVE; //移动文件操作
FileOp.fFlags = FOF_RENAMEONCOLLISION;
//BOOL fAnyOperationsAborted;
//LPVOID hNameMappings;
//LPCTSTR lpszProgressTitle;
int err = SHFileOperation( &FileOp );
if (err!=0) MessageBox("file move error");
简单说明:
SHFileOperation()的pFrom,pTo两个参数要求末尾以双/0字符结束
多文件操作,文件名之间要以单/0分割
而CString 不是以/0字符结束的字符串
所以使用此函数的时候不能直接用CString.GetBuffer() 的值