您的位置:首页 > 其它

编写自己的CMFCEditBrowseCtrl,实现打开指定类型的文件

2017-04-11 16:37 344 查看
  在Visual Studio 2010和Visual Studio 2008 SP1中,微软采用了BCG库对应用程序界面进行美化,其中CMFCEditBrowseCtrl控件可以实现在Edit控件中浏览打开文件的功能。

但是,问题出现了,该控件默认的打开文件类型是所有文件,要如何才能打开自己指定的文件类型呢?这时就需要编写自己的CMFCEditBrowseCtrl类。

具体步骤:

1.添加类,选择MFC类,在类名中填入自定义的类名如:CMyEditBrowseCtrl,选择父类为CMFCEditBrowseCtrl。

2.在头文件中添加如下代码

[html] view
plain copy

#pragma once  

  

// CMyEditBrowseCtrl  

  

class CMyEditBrowseCtrl : public CMFCEditBrowseCtrl  

{  

    //DECLARE_DYNAMIC(CMyEditBrowseCtrl)  

  

public:  

    CMyEditBrowseCtrl();  

    virtual ~CMyEditBrowseCtrl();  

  

public:  

    CString m_strFileType;//自定义开文件类型  

  

private:  

    virtual void OnBrowse();//重写CMFCEditBrowseCtrl的打开函数  

  

protected:  

    DECLARE_MESSAGE_MAP()  

};  

在CPP文件中添加如下代码

[cpp] view
plain copy

#include "stdafx.h"  

#include "MyEditBrowseCtrl.h"  

  

  

// CMyEditBrowseCtrl  

  

//IMPLEMENT_DYNAMIC(CMyEditBrowseCtrl, CMFCEditBrowseCtrl)  

  

CMyEditBrowseCtrl::CMyEditBrowseCtrl()  

{  

    m_strFileType = _T("All Files (*.*)|*.*||");  

}  

  

CMyEditBrowseCtrl::~CMyEditBrowseCtrl()  

{  

}  

  

  

BEGIN_MESSAGE_MAP(CMyEditBrowseCtrl, CMFCEditBrowseCtrl)  

END_MESSAGE_MAP()  

  

  

  

// CMyEditBrowseCtrl 消息处理程序  

  

  

void CMyEditBrowseCtrl::OnBrowse()  

{  

    CString TempPathName;  

  

    CFileDialog dlg(TRUE,NULL,NULL,NULL,m_strFileType,NULL,0,TRUE);  

    (dlg.m_ofn).lpstrTitle=_T("打开文件");  

  

    if(dlg.DoModal()==IDOK)  

    {  

        TempPathName=dlg.GetPathName();  

        SetWindowText(TempPathName);  

    }  

    else  

        return;  

}  

在使用的时候只需:

在头文件中添加:

#include "MyEditBrowseCtrl.h"

CMyEditBrowseCtrl m_wndFileEdit;

在实现函数中添加:

m_wndFileEdit1.EnableFileBrowseButton();

m_wndFileEdit1.m_strFileType=_T("Text Files(*.txt)|*.txt|All Files (*.*)|*.*||");

注意:在创建CMyEditBrowseCtrl类时,一定要禁用如下宏:

头文件中:

DECLARE_DYNAMIC(CMyEditBrowseCtrl)

Cpp文件中:

IMPLEMENT_DYNAMIC(CMyEditBrowseCtrl, CMFCEditBrowseCtrl)

否则会编译会出现如下错误:

error C2065: “classCMFCEditBrowseCtrl”: 未声明的标识符
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: