通过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,添加处理程序;文章来源:https://www.toymoban.com/news/detail-471314.html
文章来源地址https://www.toymoban.com/news/detail-471314.html
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);
}
到了这里,关于VS2019使用Microsoft Web Browser控件实例的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!