bool DeleteFile(TCHAR * lpszPath)
{
SHFILEOPSTRUCT FileOp={0}
FileOp.fFlags = FOF_ALLOWUNDO | //允许放回回收站
FOF_NOCONFIRMATION//不出现确认对话框
FileOp.pFrom = lpszPath
FileOp.pTo = NULL //一定要是NULL
FileOp.wFunc = FO_DELETE //删除 *** 作
return SHFileOperation(&FileOp) == 0
}
//复制文件或文件夹
bool CopyFile(TCHAR *pTo,TCHAR *pFrom)
{
SHFILEOPSTRUCT FileOp={0}
FileOp.fFlags = FOF_NOCONFIRMATION| //不出现确认对话框
FOF_NOCONFIRMMKDIR //需要时直接创建一个文件夹,不需用户确定
|FOF_SIMPLEPROGRESS //进度条
FileOp.pFrom = pFrom
FileOp.pTo = pTo
FileOp.wFunc = FO_COPY
return SHFileOperation(&FileOp) == 0
}
//移动文件或文件夹
bool MoveFile(TCHAR *pTo,TCHAR *pFrom)
{
SHFILEOPSTRUCT FileOp={0}
FileOp.fFlags = FOF_NOCONFIRMATION| //不出现确认对话框
FOF_NOCONFIRMMKDIR //需要时直接创建一个文件夹,不需用户确定
FileOp.pFrom = pFrom
FileOp.pTo = pTo
FileOp.wFunc = FO_MOVE
return SHFileOperation(&FileOp) == 0
}
//从命名文件或文件夹
bool ReNameFile(TCHAR *pTo,TCHAR *pFrom)
{
SHFILEOPSTRUCT FileOp={0}
FileOp.fFlags = FOF_NOCONFIRMATION
FileOp.pFrom = pFrom
FileOp.pTo = pTo
FileOp.wFunc = FO_RENAME
FileOp.hwnd= HWND_DESKTOP
return SHFileOperation(&FileOp)==0
}
void CShfileopDlg::OnButton1()
{
// TODO: Add your control notification handler code here
CopyFile(_T("c:\\two"),_T("c:\\123"))
ReNameFile(_T("c:\\newtwo"),_T("c:\\123"))
DeleteFile(_T("c:\\newtwo"))
AfxMessageBox(_T("完成"))
}
sfo.pFrom和sfo.To要求字符串最后以'\0'结尾,并不意味着你一定要显式的在字符串后面添加'\0',字符串后面是否有\0和定义的类型有关。
LPCSTR str = recvBuf1.c_str()这里得到的str已经以'\0'结尾了,后面再加'\0'是多余的。另外,这种用法并不安全,你可以自己查资料。
sfo.pTo="C:\\ip.txt\0"这里最后的\0也是多余的。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)