问候!
情况:
我的ActiveX DLL包含一个自定义的webbrowser。 webbrowser显示一个网页。当用户单击显示页面中的链接时,会弹出一个新的IE窗口并导航到单击的链接URL。
问题:
如何捕获从新弹出的IE窗口中触发的DocumenComplete和NavigateComplete事件?
我已尝试过的内容:
我试图抓住了 * NewWindow2(IDispatch ** ppDisp, VARIANT_BOOL 取消) 事件从定制的webbrowser(不是新的IE窗口)中触发,并获得指向新的IE windown的指针ppDisp。我尝试使用此指针作为事件源来建议或连接到事件处理程序(IDispatch :: Invoke)以进行事件捕获。但它不起作用。也许失败是因为新IE窗口中的文档尚未加载。我不确定。
你能告诉我一些我应该做的事吗?
谢谢!
答案 0 :(得分:1)
您没有在ppDisp中获取新的Web浏览器。您可以创建一个,接收事件,并将其在ppDisp中的应用程序属性返回给事件。
答案 1 :(得分:1)
void CYourDlg::OnNewWindow2(LPDISPATCH FAR* ppDisp, BOOL FAR* Cancel)
{
CDlgNewWB* dlgNewWB = new CYourDlg;
this.listDialogWeb.Add(dlgNewWB);
dlgNewWB ->Create(IDD_WBDLG_DIALOG);
dlgNewWB ->m_webBrowser.SetRegisterAsBrowser(TRUE);
*ppDisp = dlgNewWB ->m_webBrowser.GetApplication();
}