Chtmlview拦截新窗口的生成-NewWindow3

在使用chtmlview编写自己的浏览器的时候,如果不想点击某些链接生成新窗口,直接在原窗口或者自己新建窗口显示网页的时候,使用NewWindow3拦截并获取网页URL

1.首先在类的头文件中加入以下代码

void    NewWindow3(IDispatch **ppDisp, VARIANT_BOOL *Cancel, DWORD dwFlags, BSTR bstrUrlContext, BSTR bstrUrl);
DECLARE_EVENTSINK_MAP()

2.在cpp中加入以下代码

BEGIN_EVENTSINK_MAP(MyHtmlView, CHtmlView)
    ON_EVENT(MyHtmlView, AFX_IDW_PANE_FIRST, 273, NewWindow3, VTS_PDISPATCH VTS_PBOOL VTS_I4 VTS_BSTR VTS_BSTR)
END_EVENTSINK_MAP()

3.函数的实现

void MyHtmlView::NewWindow3(IDispatch **ppDisp, VARIANT_BOOL *Cancel, DWORD dwFlags, BSTR bstrUrlContext, BSTR bstrUrl)
{
    *Cancel = TRUE;
    Navigate2(bstrUrl);
}

其中,将Cancel赋值为TRUE,将不会自动用默认浏览器打开网页。

bstrUrl就是即将打开的网页URL

将得到的bstrUrl用来直接转入或者自己创建新窗口吧。

posted @ 2015-05-11 18:04  Travis_007  阅读(602)  评论(0编辑  收藏  举报