{
CFileDialog dlg(TRUE);
dlg.m_ofn.lpstrTitle="删除文件";
if(IDOK==dlg.DoModal())
{
CString str=dlg.GetPathName();
SHFILEOPSTRUCT file;
file.hwnd=NULL;
file.wFunc=FO_DELETE;
file.pFrom=str;
file.pTo=NULL;
file.fFlags=FOF_ALLOWUNDO;
file.hNameMappings=NULL;
file.lpszProgressTitle=NULL;
SHFileOperation(&file);
}
这样得到的文件路径不能删除文件
直接定义的CString格式也不行,但直接定义的char *格式就可以操作成功,CString格式的转换成char的也不可以
------解决思路----------------------
"pFrom" and “pTo” must be double-null terminated.(\0\0)
{
CFileDialog dlg(TRUE);
dlg.m_ofn.lpstrTitle="删除文件";
if(IDOK==dlg.DoModal())
{
CString str=dlg.GetPathName();
TCHAR szFrom[MAX_PATH] = {0};
_tcscpy(szFrom,str.GetBuffer());
szFrom[str.GetLength()+1] = _T('\0');
SHFILEOPSTRUCT file = {0};
file.wFunc=FO_DELETE;
file.pFrom=szFrom;
file.pTo=NULL;
file.fFlags=FOF_ALLOWUNDO;
SHFileOperation(&file);
}
}