MFC之CFileDialog文件保存扩展名问题 解决办法

原帖见 http://blog.csdn.net/shiwei0124/archive/2009/09/10/4538327.aspx

在CSDN论坛上发了帖子后,和人一起解决了该问题

帖子内容如下:

    先看一段代码:
static TCHAR BASED_CODE szFilter[] = _T("Map Files (*.txt)|*.txt|MapCfg Files(*.txty) |*.txty||");
CFileDialog dlg(FALSE,NULL,NULL,OFN_HIDEREADONLY|OFN_OVERWRITEPROMPT, /
szFilter,AfxGetMainWnd());
CString strPath;
CFileException e;
//判断是否按下"保存"按钮
if(dlg.DoModal() == IDOK)       
{
//获得文件保存路径,为下面right(4)方便,而不用GetFileName();可能文件未设置后缀名,则若文件小于4个字符,会出错
strPath = dlg.GetPathName();     
//根据用户选择的扩展名下拉框来确定添加的扩展名
switch (dlg.m_ofn.nFilterIndex)       
        {
//txt
        case 1:
            {
//判断文件扩展名
                if(strPath.Right(4) !=_T(".txt"))     
strPath += _T(".txt");
break;
            }
//txty
        case 2:
            {
//判断文件扩展名
if(strPath.Right(7) !=_T(".txty"))     
strPath += _T(".txty");
                break;
            }
        }
if( access(strPath, 0) == 0 )//需要#include 
        {
            CString strQuery;
            strQuery.Format("%s 已经存在,要替换掉吗?", strPath);
            if ( IDNO == ::MessageBox(m_hWnd, strQuery, "文件覆盖", MB_ICONQUESTION | MB_YESNO) )
            {
                OnBnClickedNew2();
            }
        }
      这段代码中CFileDialog中有自带覆盖文件的提示,但是这个有一个问题,比如我想保存一个文件“temp”,但是我未指定这个文件的后缀名,CFileDialog只能检测我输入框的文件在文件夹内是否有重名文件"temp",我这些代码给附加了一些功能,根据文件扩展名过滤框自动添加未写的扩展名,而且之后进行判断是否有 "temp.txt",这里就等于进行了两次覆盖判断  一次是对话框自动的"temp"检测,还有一次就是我设置的"temp.txt"
      我想要做的就是在对话框内判断"temp.txt",而不是"temp"的判断,即在对话框内自动添加扩展名然后进行判断。
(web浏览器进行图片保存时就是这个做法。)
CFileDialog有什么函数或者参数可以进行设置吗?还是需要重载?
请高手解答下,最好给出段代码研究研究

回复次数:13

  • shiwei0124用户头像
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值