我在对话框界面上添加了一个按钮,单击确认后删除一个非空文件夹,代码如下所示:
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*应该也没有错啊,请问各位是什么原因,如何解决?多谢!问题解决立刻结帖!

解决方案 »

  1.   

    你程序中的str是如何获得的?
      

  2.   

    参考:http://www.vckbase.com/document/viewdoc/?id=1104
    先删除文件夹下的所有文件,然后再删除文件夹!
      

  3.   

    void CTestDymanicDlg::OnButton1() 
    {
        
    char* ch;
        ch =(LPTSTR)(LPCTSTR)str;//str此时为"F:\\wom";
        DeleteFolder(ch);
    }
      

  4.   

    void CTestDymanicDlg::OnButton1() 
    {
        TRACE("%s\n",str);
        char* ch;
        ch =(LPTSTR)(LPCTSTR)str;//str此时为"F:\\wom";
        DeleteFolder(ch);
    }调试一下,到输出窗口看看str的值,确保为"f:\wom",而不是"f:\\wom"
      

  5.   

    to bohut(伯虎) ( ) ,我程序中str是从SQL数据库中读出来的
      

  6.   

    to Hendy_So(横笛) 路径要以"\0\0"结束,两个空字符。是不是str要写成"F:\ \ wom"形式
      

  7.   

    to bohut(伯虎)   调试一下,到输出窗口看看str的值,确保为"f:\wom",而不是"f:\\wom"
    这个我已调试了,是"f:\wom"。
      

  8.   

    删除一个非空目录: SHFILEOPSTRUCT op={0};
    op.wFunc = FO_DELETE;
    op.pFrom = "c:\\11"; //此处可以换成 op.pFrom = str; 
    op.fFlags = FOF_SILENT|FOF_NOCONFIRMATION|FOF_ALLOWUNDO;
    SHFileOperation(&op);
      

  9.   

    果然要写成"F:\ \ wom"形式,多谢各位了,结帖了!