关于SHFileOperation引发的问题
2013-06-03 13:33
176 查看
typedef struct _SHFILEOPSTRUCT {
HWND hwnd;
UINT wFunc;
LPCTSTR pFrom;
LPCTSTR pTo;
FILEOP_FLAGS fFlags;
BOOL fAnyOperationsAborted;
LPVOID hNameMappings;
LPCTSTR lpszProgressTitle;
} SHFILEOPSTRUCT, *LPSHFILEOPSTRUCT;
1). SHFileOperation需要注意的问题点:
◆ pFrom和pTo两个参数需要有两个\0结尾才行。
◆ 函数调用之后不能使用GetLastError来获取函数的失败原因
2). 这里引申出另一个问题:
bool _RenameFile(const TCHAR *_pFrom,const TCHAR *_pTo,WORD flags/*=FOF_NOCONFIRMATION */)
{
TCHAR pTo[MAX_PATH]={0}; _tcscpy_s(pTo,_pTo);
TCHAR pFrom[MAX_PATH]={0}; _tcscpy_s(pFrom,_pFrom);
SHFILEOPSTRUCT FileOp={0};
FileOp.fFlags= flags;
FileOp.pFrom = pFrom;
FileOp.pTo = pTo;
FileOp.wFunc = FO_RENAME;
return SHFileOperation(&FileOp) == 0;
}
这样看没有什么问题.但是发现程序的行为有问题.后来才发现是之前总结的原因,ok,吧_tcscpy_s改成_tcscpy搞定.
这个就有问题:_tcscpy_s和_tcscpy不等价
HWND hwnd;
UINT wFunc;
LPCTSTR pFrom;
LPCTSTR pTo;
FILEOP_FLAGS fFlags;
BOOL fAnyOperationsAborted;
LPVOID hNameMappings;
LPCTSTR lpszProgressTitle;
} SHFILEOPSTRUCT, *LPSHFILEOPSTRUCT;
1). SHFileOperation需要注意的问题点:
◆ pFrom和pTo两个参数需要有两个\0结尾才行。
◆ 函数调用之后不能使用GetLastError来获取函数的失败原因
2). 这里引申出另一个问题:
bool _RenameFile(const TCHAR *_pFrom,const TCHAR *_pTo,WORD flags/*=FOF_NOCONFIRMATION */)
{
TCHAR pTo[MAX_PATH]={0}; _tcscpy_s(pTo,_pTo);
TCHAR pFrom[MAX_PATH]={0}; _tcscpy_s(pFrom,_pFrom);
SHFILEOPSTRUCT FileOp={0};
FileOp.fFlags= flags;
FileOp.pFrom = pFrom;
FileOp.pTo = pTo;
FileOp.wFunc = FO_RENAME;
return SHFileOperation(&FileOp) == 0;
}
这样看没有什么问题.但是发现程序的行为有问题.后来才发现是之前总结的原因,ok,吧_tcscpy_s改成_tcscpy搞定.
这个就有问题:_tcscpy_s和_tcscpy不等价
相关文章推荐
- 由一个问题引发的思考——关于数据库的外键约束
- 关于TIME_WAIT可能引发的网络问题
- 关于one-hot编码引发相关问题的一点感想
- 一个关于Oracle更新语句引发的时间字段类型的问题
- 关于数组去重问题引发的一系列思考
- 关于多标签浏览器中session共享引发的问题
- 关于heap内存分配问题追踪以及对引发coredump原因的思考
- 关于Objective-C 错误代码 Expression is not assignable 引发的问题
- 关于Jquery和滤镜的问题引发的...
- 一道题目引发的关于c++命名域的问题--Avoid hiding inheried names
- 关于URL重写引发的PostBack问题
- Dynamics CRM2016 关于修改部署管理员账号权限引发的问题
- 关于引发异常的问题(异常名后,实例)
- 关于 Android “finished with non-zero exit value ”引发的问题
- 关于httpclient 连接失效引发的问题
- Dynamics CRM2016 关于修改部署管理员账号权限引发的问题
- 2017-04-27 DBA日记,关于存储光纤交换机故障引发的数据库性能问题
- 关于ORACLE通过file_id与block_id定位数据库对象遇到的问题引发的思考
- 由test -n/-z 引发的关于shell变量问题的探讨
- 关于CSAPP lab3中压栈问题引发的思考