注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

mie

 
 
 

日志

 
 

VC 2010+MFC:扩充CMFCEditBrowseCtrl,使之支持“另存为”对话框  

2011-04-29 17:52:51|  分类: vc界面编程 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

VC 2010+MFC:扩充CMFCEditBrowseCtrl,使之支持“另存为”对话框

 

        VC 2010的CMFCEditBrowseCtrl只支持“浏览文件夹”和“打开文件”,如果能够支持“另存为”,那么,CMFCEditBrowseCtrl控件将给开发者带来极大的方便。为此,我们简单实现如下:

 

////////////////////////////////////////////////////////////////////////////////////////////LTMFCEditBrowseCtrl.h头文件

#pragma once


// CLTMFCEditBrowseCtrl

class CLTMFCEditBrowseCtrl : public CMFCEditBrowseCtrl
{
public:
 CLTMFCEditBrowseCtrl();
 virtual ~CLTMFCEditBrowseCtrl();

protected:
 BOOL m_bSave;

public:
 BOOL GetIsSave(){return m_bSave;};
 void SetIsSave(BOOL b){m_bSave=b;};

protected:
 DECLARE_MESSAGE_MAP()

 void OnBrowse();
};

 

////////////////////////////////////////////////////////////////////////////////////////////LTMFCEditBrowseCtrl.cpp源文件


#include "stdafx.h"
#include "LTMFCEditBrowseCtrl.h"


// CLTMFCEditBrowseCtrl

CLTMFCEditBrowseCtrl::CLTMFCEditBrowseCtrl()
{
 m_bSave=FALSE;
}

CLTMFCEditBrowseCtrl::~CLTMFCEditBrowseCtrl()
{
}


BEGIN_MESSAGE_MAP(CLTMFCEditBrowseCtrl, CMFCEditBrowseCtrl)
END_MESSAGE_MAP()

 

// CLTMFCEditBrowseCtrl 消息处理程序

 

void CLTMFCEditBrowseCtrl::OnBrowse()
{
 switch (m_Mode)
 {
 case BrowseMode_File:
  if (m_bSave)
  {
   CString strFile;
   GetWindowText(strFile);

   if (!strFile.IsEmpty())
   {
    TCHAR fname [_MAX_FNAME];

    _tsplitpath_s(strFile, NULL, 0, NULL, 0, fname, _MAX_FNAME, NULL, 0);

    CString strFileName = fname;
    strFileName.TrimLeft();
    strFileName.TrimRight();

    if (strFileName.IsEmpty())
    {
     strFile.Empty();
    }

    const CString strInvalidChars = _T("*?<>|");
    if (strFile.FindOneOf(strInvalidChars) >= 0)
    {
     if (!OnIllegalFileName(strFile))
     {
      SetFocus();
      return;
     }
    }
   }

   CFileDialog dlg(FALSE, !m_strDefFileExt.IsEmpty() ? (LPCTSTR)m_strDefFileExt : (LPCTSTR)NULL, strFile, 0, !m_strFileFilter.IsEmpty() ? (LPCTSTR)m_strFileFilter : (LPCTSTR)NULL, NULL);
   if (dlg.DoModal() == IDOK && strFile != dlg.GetPathName())
   {
    SetWindowText(dlg.GetPathName());
    SetModify(TRUE);
    OnAfterUpdate();
   }

   if (GetParent() != NULL)
   {
    GetParent()->RedrawWindow(NULL, NULL, RDW_FRAME | RDW_INVALIDATE | RDW_ALLCHILDREN);
   }

   return ;
  }
  break;
 }

 __super::OnBrowse();
}

 

调用代码示例:

(1)#include "LTMFCEditBrowseCtrl.h"                          //包含头文件
(2) CLTMFCEditBrowseCtrl m_edit_dest_image;          //将CMFCEditBrowseCtrl 改为CLTMFCEditBrowseCtrl

(3) m_edit_dest_image.SetIsSave(TRUE);                    //启用“另存为”


By:zhanyonhu

 

  评论这张
 
阅读(2141)| 评论(1)
推荐 转载

历史上的今天

在LOFTER的更多文章

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2016