使用MFC的CHtmlView创建浏览器控件

PlazaBrowser.h
<pre name="code" class="cpp">#ifndef	PLAZA_BROWSER_HEAD_FILE
#define PLAZA_BROWSER_HEAD_FILE
#pragma once
#include <afxhtml.h>

//

//浏览控件
class CPlazaBrowser : public CHtmlView
{
	//函数定义
public:
	//构造函数
	CPlazaBrowser();
	//析构函数
	virtual ~CPlazaBrowser();

	//重载函数
protected:
	//绑定函数
	virtual VOID PreSubclassWindow();
	//消耗处理
	virtual VOID PostNcDestroy();

	//功能函数
public:
	//创建函数
	virtual BOOL Create(LPCTSTR lpszClassName, LPCTSTR lpszWindowName, DWORD dwStyle, const RECT & rect, CWnd * pParentWnd, UINT nID, CCreateContext * pContext=NULL);

	//消息函数
public:
	//关闭事件
	VOID OnWindowClosing(BOOL IsChildWindow, BOOL * bCancel);

	DECLARE_MESSAGE_MAP()
	DECLARE_EVENTSINK_MAP()

};


#endif


 
PlazaBrowser.cpp
<pre name="code" class="cpp">#include "stdafx.h"
#include "PlazaBrowser.h"
#include <exdispid.h>
//
BEGIN_MESSAGE_MAP(CPlazaBrowser, CHtmlView)
END_MESSAGE_MAP()

BEGIN_EVENTSINK_MAP(CPlazaBrowser, CHtmlView)
	ON_EVENT(CPlazaBrowser, AFX_IDW_PANE_FIRST, DISPID_WINDOWCLOSING, OnWindowClosing,VTS_BOOL VTS_PBOOL)   
END_EVENTSINK_MAP()

//构造函数
CPlazaBrowser::CPlazaBrowser()
{
}

//析构函数
CPlazaBrowser::~CPlazaBrowser()
{
}

//绑定函数
VOID CPlazaBrowser::PreSubclassWindow()
{
	__super::PreSubclassWindow();

	//设置背景
	SetClassLong(m_hWnd,GCL_HBRBACKGROUND,NULL);

	return;
}

//消耗处理
VOID CPlazaBrowser::PostNcDestroy()
{
	return;
}

//创建函数
BOOL CPlazaBrowser::Create(LPCTSTR lpszClassName, LPCTSTR lpszWindowName, DWORD dwStyle, const RECT & rect, CWnd* pParentWnd, UINT nID, CCreateContext* pContext)
{
	//设置变量
	m_pCreateContext=pContext;

	//创建窗口
	if (CView::Create(lpszClassName,lpszWindowName,dwStyle,rect,pParentWnd,nID,pContext)==FALSE)
	{
		return FALSE;
	}

	//获取大小
	CRect rcClient;
	GetClientRect(&rcClient);

	//创建窗口
	if (m_wndBrowser.CreateControl(CLSID_WebBrowser,lpszWindowName,WS_VISIBLE|WS_CHILD,rcClient,this,AFX_IDW_PANE_FIRST)==FALSE)
	{
		DestroyWindow();
		return FALSE;
	}

	//查询接口
	LPUNKNOWN lpUnknown=m_wndBrowser.GetControlUnknown();
	lpUnknown->QueryInterface(IID_IWebBrowser2,(VOID **)&m_pBrowserApp);

	//屏蔽js错误提示
	m_pBrowserApp->put_Silent(VARIANT_TRUE);

	return TRUE;
}

//关闭事件
void CPlazaBrowser::OnWindowClosing(BOOL IsChildWindow, BOOL *bCancel)   
{   
	//禁止关闭
	if ((IsChildWindow==FALSE)&&(bCancel!=NULL))
	{
		*bCancel=TRUE;
	}

	return;
}


 
<pre name="code" class="cpp">	//创建控件
	CPlazaBrowser					m_PlazaBrowser;						//浏览控件
	CRect rcCreate(0,0,0,0);
	m_PlazaBrowser.Create(NULL,NULL,WS_CHILD|WS_VISIBLE,rcCreate,this,1001,NULL);
	m_PlazaBrowser.SetWindowPos(NULL,0,0,400,300,SWP_SHOWWINDOW);
	m_PlazaBrowser.Navigate(TEXT("http://192.168.2.254/ie.html"),NULL,NULL,NULL,NULL);



                
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值