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

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


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

具体步骤:

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

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



#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文件中添加如下代码

#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”: 未声明的标识符





评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值