VS2019使用Microsoft Web Browser控件实例

通过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);
}

文章来源地址https://uudwc.com/A/y9No

原文地址:https://blog.csdn.net/can_yi/article/details/123853595

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请联系站长进行投诉反馈,一经查实,立即删除!

h
上一篇 2023年06月17日 11:18
下一篇 2023年06月17日 11:18