MFC之CFileDialog文件保存扩展名问题

void CmapfileDlg::OnBnClickedNew2()

{

 static char BASED_CODE szFilter[] = "Map Files (*.map)|*.map|MapCfg Files(*.mapCfg) |*.mapCfg||";

 CFileDialog dlg(FALSE,NULL,NULL,OFN_HIDEREADONLY|OFN_OVERWRITEPROMPT, /
     szFilter,AfxGetMainWnd());
 CString strPath;  
 CFileException e;

 if(dlg.DoModal() == IDOK)         //判断是否按下"保存"按钮
 {
  strPath = dlg.GetPathName();       //获得文件保存路径,为下面right(4)方便,而不用GetFileName();


  //根据用户选择的扩展名下拉框来确定添加的扩展名
  switch (dlg.m_ofn.nFilterIndex)          //此处可以获取扩展名下拉框是采用的哪种过滤串
  {
        case 1:
            {
                if(strPath.Right(4) !=_T(".map") || strPath.Right(7) != _T(".map"))       //判断文件扩展名
    strPath += _T(".map");
                break;
            }
        case 2:
            {
                    if(strPath.Right(7) !=_T(".mapCfg") || strPath.Right(7) != _T(".mapCfg"))       //判断文件扩展名
    strPath += _T(".mapCfg");
                break;
            }
    }

   

      if( access(strPath, 0) == 0 )//需要#include  <io.h> //上述CFileDialog 只能检查名字一模一样的文件是否已经存在,此段代码用来检测保存的文件未设置扩展名,该文件夹内是否有添加扩展名后名字一样的文件,但是有个问题,若文件夹内有 “1”的文件,想保存的文件名也是“1”,则会提示无法保存,而要的实际情况是,仍然可以保存,因为会添加扩展名进去。
        {
            CString strQuery;
            strQuery.Format("%s 已经存在,要替换掉吗?", strPath);
            if ( IDNO == ::MessageBoxA(m_hWnd, strQuery, "文件覆盖", MB_ICONQUESTION | MB_YESNO) )
            {
                OnBnClickedNew2();
            }
        }

 

 

   CFile file(strPath,CFile::modeCreate|CFile::modeReadWrite); //创建文件

 

.......................

 

}

 

CFileDialog::m_ofn

说明:
m_ofn是OPENFILENAME类型的结构。使用此结构,在创建之后、用DoModal成员函数显示之前初始化文件打开和存盘对话框的外表。例如,可设置m_ofn的lpstrTitle成员为希望的对话框标题。

 

OPENFILENAME

  OPENFILENAME结构包含了 GetOpenFileNameGetSaveFileName函数用来初始化打开或另存为对话框的信息。在用户关闭对话框后,系统返回关于用户的选择信息到这个结构中。
   结构体原型:
  typedef struct tagOFN {
  DWORD lStructSize;
  HWND hwndOwner;
  HINSTANCE hInstance;
  LPCTSTR lpstrFilter;
  LPTSTR lpstrCustomFilter;
  DWORD nMaxCustFilter;
  DWORD nFilterIndex;
  LPTSTR lpstrFile;
  DWORD nMaxFile;
  LPTSTR lpstrFileTitle;
  DWORD nMaxFileTitle;
  LPCTSTR lpstrInitialDir;
  LPCTSTR lpstrTitle;
  DWORD Flags;
  WORD nFileOffset;
  WORD nFileExtension;
  LPCTST
  • 1
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值