我想实现点击按钮,将数据存入到文件(文件名由编辑框内输入的名字决定)中去,若文件存在,提示是否覆盖,我写的OnSelectButton()  代码如下,不知为什么,即使我保存的文件名已经存在,依然直接覆盖,请高手指点,谢谢  
CFileDialog  dlg(false,"TXT",NULL,NULL,"Text  file(*.txt)  ¦  *.TXT  ¦  ¦",NULL);  
if(dlg.DoModal()==IDOK)  
 {  
     if(GetLastError()==ERROR_FILE_EXISTS)  
     {  
         if(::MessageBox(NULL,"目标文件已经存在!覆盖吗?","Warnning!",  MB_ICONEXCLAMATION  ¦MB_YESNO)==IDNO)  
         {  
           return;  
         }  
     }  
     m_path=dlg.GetPathName();                            //将文件路径保存在m_path中  
 }  

解决方案 »

  1.   

    你要自己从CFileDialog继承一个类,然后重载virtual BOOL OnFileNameOK();
    class CMyFileDialog : public CFileDialog
    {
    DECLARE_DYNAMIC(CMyFileDialog)public:
    CMyFileDialog(BOOL bOpenFileDialog, // TRUE for FileOpen, FALSE for FileSaveAs
    LPCTSTR lpszDefExt = NULL,
    LPCTSTR lpszFileName = NULL,
    DWORD dwFlags = OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT,
    LPCTSTR lpszFilter = NULL,
    CWnd* pParentWnd = NULL);
    virtual ~CMyFileDialog();protected:
    DECLARE_MESSAGE_MAP()
    virtual BOOL OnFileNameOK();
    };BOOL CMyFileDialog::OnFileNameOK()
    {
    FILE* f = NULL;

    if ( ( f = fopen( GetFileName(), "r" ) ) != NULL ) 
    {
    fclose( f );
    MessageBox( "t", "t", MB_OK );
    } return CFileDialog::OnFileNameOK();
    }