当前位置:   article > 正文

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

m_ofn.nfilterindex

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
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/我家小花儿/article/detail/123113?site
推荐阅读
相关标签
  

闽ICP备14008679号