用CFileDialog打开一个文件后,该文件的文件夹无法手动删除,  
例如:文件夹c:\temp   下有个文件1.txt,现在我使用CFileDialog打开了这个1.txt,操作完了,这时我想手动修改c:\temp的名称例如改为c:\tmp
这个操作不可行,只有推出程序才能对该文件夹操作,现在我并不想退出任何程序,但是想解除对c:\temp的锁定。

解决方案 »

  1.   

    打开文件后你没有关闭啊。而且CFileDialog只是用来选择文件的,你怎么打开的?
      

  2.   

    void XXClass::OnOpenFile()
    {
        CFileDialog dlgPage(TRUE, _T("*.txt"), NULL, OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT,
    _T("(*.txt files)|*.txt| \n(All files)|*.*||"), NULL);
       if(dlgPage.DoModal() == IDOK)
       {
        .......
       }
    }
    程序完了。如果我打开了:文件夹c:\temp下有一个文件1.txt。如果程序不关闭,我无法对文件夹c:\temp进行其他操作。
      

  3.   

    大侠,你的......都干什么了啊?
    CFileDialog只是让你选择文件,并没有打开这个文件啊。
    是你的......在打开选择的文件。
      

  4.   

    可以
    CFileDialog dlgFile(...);
    dlgFile.m_ofn.lpstrInitialDir = "Your Dir"; //此处更改文件夹路径
      

  5.   

        CFileDialog dlgPage(TRUE, _T("*.txt"), NULL, OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT, 
    _T("(*.txt files)|*.txt| \n(All files)|*.*||"), NULL); 
      if(dlgPage.DoModal() == IDOK) 
      { 
        CString yourFileName=dlgPage.GetPathName();
        CFile::Remove(yourFileName); 
      } 
      

  6.   

    问题不在CFileDialog上,一定是你的程序别处open这个文件了.
      

  7.   

    问题解决了!dlgPage.DoModal()完之后用了系统的一个函数  ::SetCurrentDirectory(strPath)<---------strPath可以设置为程序路径
      

  8.   

    我也遇到类似的问题,不知道怎么解决。我用CFileDialog选择了一个文件夹,关闭当前对话框,可是当你删除时还是冲突
      

  9.   

    问题解决:
        用过CFileDlg之后,用::SetCurDir();就可以了。