我在对话框界面上添加了一个按钮,单击确认后删除一个非空文件夹,代码如下所示:
void CTestDymanicDlg::OnButton1()
{
char* ch;
ch =(LPTSTR)(LPCTSTR)str;//str此时为"F:\\wom";
DeleteFolder(ch);
}下面是删除子程序:
BOOL CTestDymanicDlg::DeleteFolder(char* pszFolder)
{
SHFILEOPSTRUCT fos;
ZeroMemory(&fos,sizeof(fos));
//fos.hwnd=HWND_DESKTOP;
fos.hwnd = NULL;
fos.wFunc=FO_DELETE;
fos.fFlags=FOF_SILENT | FOF_NOCONFIRMATION;
fos.pFrom=pszFolder;
fos.pTo = "";
fos.lpszProgressTitle = "";
fos.fAnyOperationsAborted = TRUE;
//删除文件夹及其内容
if(0!=SHFileOperation(&fos))
return FALSE; return TRUE;
}
现在的问题是,我执行OnButton1()后,文件夹并没有被删除;而如果我直接将ch = "F:\\wom";再执行OnButton1()就可以删除,可我的CString转化为char*应该也没有错啊,请问各位是什么原因,如何解决?多谢!问题解决立刻结帖!
void CTestDymanicDlg::OnButton1()
{
char* ch;
ch =(LPTSTR)(LPCTSTR)str;//str此时为"F:\\wom";
DeleteFolder(ch);
}下面是删除子程序:
BOOL CTestDymanicDlg::DeleteFolder(char* pszFolder)
{
SHFILEOPSTRUCT fos;
ZeroMemory(&fos,sizeof(fos));
//fos.hwnd=HWND_DESKTOP;
fos.hwnd = NULL;
fos.wFunc=FO_DELETE;
fos.fFlags=FOF_SILENT | FOF_NOCONFIRMATION;
fos.pFrom=pszFolder;
fos.pTo = "";
fos.lpszProgressTitle = "";
fos.fAnyOperationsAborted = TRUE;
//删除文件夹及其内容
if(0!=SHFileOperation(&fos))
return FALSE; return TRUE;
}
现在的问题是,我执行OnButton1()后,文件夹并没有被删除;而如果我直接将ch = "F:\\wom";再执行OnButton1()就可以删除,可我的CString转化为char*应该也没有错啊,请问各位是什么原因,如何解决?多谢!问题解决立刻结帖!
先删除文件夹下的所有文件,然后再删除文件夹!
{
char* ch;
ch =(LPTSTR)(LPCTSTR)str;//str此时为"F:\\wom";
DeleteFolder(ch);
}
{
TRACE("%s\n",str);
char* ch;
ch =(LPTSTR)(LPCTSTR)str;//str此时为"F:\\wom";
DeleteFolder(ch);
}调试一下,到输出窗口看看str的值,确保为"f:\wom",而不是"f:\\wom"
这个我已调试了,是"f:\wom"。
op.wFunc = FO_DELETE;
op.pFrom = "c:\\11"; //此处可以换成 op.pFrom = str;
op.fFlags = FOF_SILENT|FOF_NOCONFIRMATION|FOF_ALLOWUNDO;
SHFileOperation(&op);