欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  数据库

WTL 通过IWebBrowser2接口使WebBrowser控件在自己的窗口打开网页

程序员文章站 2022-06-14 21:25:46
...

遇到的问题是这样的, 在WTL中我用了一个WebBrowser控件来显示网页,但是在点击网页中的链接的时候经常跳到其他浏览器上去打开这个链接。我希望的是总是在我的这个控件上显示网页, 不要跳到其他浏览器上去打开。 1.添加IWebBrowser2控件 在创建的时候Select

遇到的问题是这样的, 在WTL中我用了一个WebBrowser控件来显示网页,但是在点击网页中的链接的时候经常跳到其他浏览器上去打开这个链接。我希望的是总是在我的这个控件上显示网页, 不要跳到其他浏览器上去打开。

1.添加IWebBrowser2控件

在创建的时候Select project options下要勾选Enable ActiveX Control Hosting, 让其继承自CAxDialogImpl, 然后在对话框上点右键Insert ActiveX Control..., 找到Microsoft Web Browser确定, 将属性ID号改为IDC_IE。

2.让程序运行后打开一个默认网页

1>CComPtr m_pWb2;

2>在OnInitDialog中, return上面

3.解决在同一个窗口打开网页的问题

1>让CMainDlg继承自public IDispEventImpl

给控件添加一个事件,这个事件是在打开一个新窗口的时候触发

2>关键是响应函数

具体函数的作用可以查下msdn, 按理说这样应该就完了, 但是当我编译的时候有个错误说DISPID_NEWWINDOW2没定义

包含#include 就可以了。

问题还没完, 运行后点击网页上的链接窗口并没有响应上面的事件,解决方法: