VS2019使用Microsoft Web Browser控件实例

8 篇文章 0 订阅

通过ActiveX控件 Microsoft Web Browser 可以实现简易的浏览器访问,但网上大多文章都是片段式的,所以写个完整的实现流程。

1.首先创建一个基于对话框的MFC项目,命名为WebBrowserDemo;

2.打开主窗口,添加一个编辑框,用来输入网址;然后右键,插入ActiveX控件,选择Microsoft Web Browser;

3.然后添加控件变量,第一种就是默认的CEXPLORER1 变量类型;

然后会自动生成CEXPLORER1.h,但是这里面会有IWebBrowser 和IWebBrowser2 两组函数,所以会报错,可以注释掉一组;

4.对确定按钮添加处理函数,实现打开网页操作;

void CWebBrowserDemoDlg::OnBnClickedOk()
{
	// TODO: 在此添加控件通知处理程序代码
	CString strURL;
	GetDlgItemText(IDC_EDIT1, strURL);
	m_web.Navigate(strURL, NULL, NULL, NULL, NULL);
}

 编译运行,输入网址后点确定,网页就可以打开了;

 

5.第二种变量类型就是CWebBrowser2,这个需要手动生成,选择项目-添加新项-MFC-ActiveX控件中的MFC类;

本来选择注册表,可用类型库就会有Microsoft Web Browser,但不知道为啥我的电脑没有;

所以只能选择文件,然后手动找到这个位置C:\Windows\SysWOW64\ieframe.dll,这时就有可用接口了,选择IWebBrowser2,添加到右侧实现接口,点确定;

 

 这时再添加控件变量,变量类型就可以手动改成CWebBrowser2;

 打开网页实现方式跟之前一样;

 

优化 

1.会弹出脚本错误;

将控件属性Silent 改为True就好了;

 2.点击网页中的内容,打开一个新的页面时会调回IE浏览器;需要重载Newwindow3 处理函数,选择项目-类向导,在"对象ID"中找到web控件,"消息"选择NewWindow3,添加处理程序;

void CWebBrowserDemoDlg::OnNewwindow3Explorer1(LPDISPATCH* ppDisp, BOOL* Cancel, unsigned long dwFlags, LPCTSTR bstrUrlContext, LPCTSTR bstrUrl)
{
	// TODO: 在此处添加消息处理程序代码
	*Cancel = TRUE;
	this->m_web.Navigate(bstrUrl, NULL, NULL, NULL, NULL);
	this->m_web.ShowWindow(SW_SHOW);
}

评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值