我在程序中用GetSaveFileName来保存文件,发现一个问题。就是设置了OFN_OVERWRITEPROMPT属性后,在“文件名”的框里输入一个已有文件的文件名,然后将这个文件删除,在对话框的窗口中也看不到这个文件,点击“保存”,却提示该文件已存在,但是文件已经被删了啊!我用windows自带的记事本试了一下却不会出现这样的问题。怎么样解决这个问题呢,希望各位发表高见。程序例子如下:
 TCHAR   szFilename[MAX_PATH]   =   TEXT("");  
          BOOL   bResult   =   FALSE;  
          OPENFILENAME   ofn   =   {0};  
   
          ofn.lStructSize   =   sizeof   (OPENFILENAME);  
          ofn.lpstrFilter   =   TEXT("All   Files\0*.*\0\0");  
          ofn.lpstrFile   =   szFilename;  
          ofn.nMaxFile   =   MAX_PATH;  
          ofn.Flags   =   OFN_EXPLORER   |    
                                  OFN_ENABLEHOOK   |    
                                  OFN_HIDEREADONLY   |    
                                  OFN_NOCHANGEDIR   |    
                                  OFN_PATHMUSTEXIST|
                                  OFN_OVERWRITEPROMPT;  
   
          bResult   =   GetSaveFileName   (&ofn);

解决方案 »

  1.   

    http://www.graphics.net.cn/document/vc/011/011.asp自己去看下
      

  2.   

    如下的没这回事:
    CString   filename;   
    char   szFileters[]="save   files   (*.txt)|*.txt|ALL   files   (*.*)|*.*||";   
    CFileDialog   opendlg   (FALSE,"txt","*.txt",OFN_OVERWRITEPROMPT,szFileters,this);   
    if   (opendlg.DoModal()==IDOK){   
    filename=opendlg.GetPathName();   
    }
      

  3.   

    不会吧,没有其他解决办法了吗?
    要自己实现的话要重写哪些东西呢?我还真不知道。
    (这个不知道算不算小小小bug呢?~ ~ )
      

  4.   

    seu07201213
    对不起,步骤没说清楚,应该这样做:
    1.运行程序弹出保存对话框。
    2.假设在C盘下有个文件1.txt。在保存对话框中单击选择该文件,则“文件名”中有了该文件名“1.txt”。
    3.删除1.txt文件。
    4.保存。
    5.弹出提示已有此文件的对话框。
      

  5.   

    zhj007(忧郁の天子)
    刚测试那小段保存代码,也有这个问题。
      

  6.   

    试了一下, XP/2003 , VS2005/VC6(sp5) , 没有问题.
      

  7.   

    我的机子是win2000 Pro ,VC6(sp6) 是有这样的问题的。
    难道是系统原因?哪位身边有多系统的试试。