如果拷贝函数的参数都是LPCTSTR类型:
OnCopyFile(LPCTSTR strSrc,LPCTSTR strDet)
{
char strTitle[]="File copying";
SHFILEOPSTRUCT FileOp;
FileOp.hwnd=this->m_hWnd;
FileOp.wFunc=FO_COPY;
FileOp.pFrom=strSrc;
FileOp.pTo=strDst;
FileOp.fFlags=FOF_ALLOWUNDO;
FileOp.hNameMappings=NULL;
FileOp.lpszProgressTitle=strTitle;
::SHFileOperation(&FileOp);
}
则:LPCTSTR strSrc="c:\\123.exe";
LPCTSTR strDst="d:\\123.exe";
OnCopyFile(strSrc,strDst)将被正确执行
但如果将参数变成CString类型,即拷贝函数声明为OnCopyFile(CString strSrc,CString strDst)时,定义CString strSrc="c:\\123.exe"; CString strDst="d:\\123.exe",然后调用OnCopyFile,便会出现如标题所说的错误。为什么?
OnCopyFile(LPCTSTR strSrc,LPCTSTR strDet)
{
char strTitle[]="File copying";
SHFILEOPSTRUCT FileOp;
FileOp.hwnd=this->m_hWnd;
FileOp.wFunc=FO_COPY;
FileOp.pFrom=strSrc;
FileOp.pTo=strDst;
FileOp.fFlags=FOF_ALLOWUNDO;
FileOp.hNameMappings=NULL;
FileOp.lpszProgressTitle=strTitle;
::SHFileOperation(&FileOp);
}
则:LPCTSTR strSrc="c:\\123.exe";
LPCTSTR strDst="d:\\123.exe";
OnCopyFile(strSrc,strDst)将被正确执行
但如果将参数变成CString类型,即拷贝函数声明为OnCopyFile(CString strSrc,CString strDst)时,定义CString strSrc="c:\\123.exe"; CString strDst="d:\\123.exe",然后调用OnCopyFile,便会出现如标题所说的错误。为什么?
解决方案 »
- 1端口号的管理
- 世界杯
- 指標陣列的應用?
- 请教: 想获得调用dll的主进程所在文件路径,应该怎么办
- 为什么会弹出两个对话框????
- 哪位大侠能帮我研究< MyICQ 0.9b2 >(服务器端),并提供一些详细一点的文档,本人源奉上1000分,另感激不尽
- 怎么让一个窗口获得焦点? 给它发送一个点击事件也可以,怎么写?
- 如何在一个应用程序中获得另一个应用程序控件句柄?
- 不是危言耸听,MS的.NET将放弃MFC,MFC的末日真的来了
- 安装VS.NET7.0气得我吐血,总是提示我:
- 难题
- MSMQ错误:未能为检测点保存 MQInSeq。没有检测点,消息队列不能可靠地继续。 HELP!!!在线等待!!!
LPCTSTR strSrc="c:\\123.exe\0\0";
LPCTSTR strDst="d:\\123.exe\0\0";再试试看.
Each file name must be terminated by a single NULL character. An additional NULL character must be appended to the end of the final name to indicate the end of pFrom.
所以在你的函数体最开始处加上: strSrc += '\0';
strDet += '\0';