请教调用 SHFileOperation 进行文件复制重命名的问题

请教调用 SHFileOperation 进行文件复制重命名的问题,第1张

#include<shellapi.h>

//删除文件或者文件夹

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也是多余的。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/tougao/12022896.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-20
下一篇 2023-05-20

发表评论

登录后才能评论

评论列表(0条)

保存