基于view的处理方法=========
m_pBrowserApp->put_RegisterAsBrowser(VARIANT_TRUE);
void CMyHtmlView::OnNewWindow2(LPDISPATCH* ppDisp, BOOL* Cancel)
{
CComPtr<IHTMLDocument2> pHTMLDocument2;
m_pBrowserApp->get_Document((IDispatch **)&pHTMLDocument2);
if (pHTMLDocument2!=NULL)
{
CComPtr<IHTMLElement> pIHTMLElement;
pHTMLDocument2->get_activeElement(&pIHTMLElement);
if (pIHTMLElement!=NULL)
{
variant_t url;
HRESULT hr=pIHTMLElement->getAttribute(L"href", 0, &url);
if (SUCCEEDED(hr))
{
hr=m_pBrowserApp->Navigate2(&url, NULL, NULL, NULL, NULL);
url.Clear();
if (SUCCEEDED(hr))
{
*Cancel=TRUE;
}
}
}
}
//CHtmlView::OnNewWindow2(ppDisp, Cancel);
}
==============================基于dialog
如果想要禁止在新窗口打开,则需要添加控件事件处理函数NewWindow3()添加如下函数
- void C网页Dlg::NewWindow3Explorer1(LPDISPATCH* ppDisp, BOOL* Cancel, unsigned long dwFlags, LPCTSTR bstrUrlContext, LPCTSTR bstrUrl)
- {
- // TODO: 在此处添加消息处理程序代码
- * Cancel = TRUE;
- VARIANT vInfo;
- m_webBrowser.Navigate(<span style="color: rgb(51, 102, 153); font-family: Monaco, Consolas, 'Lucida Console', 'Courier New', serif; line-height: 21.600000381469727px; ">bstrUrl</span>, &vInfo, &vInfo, &vInfo, &vInfo);
- }