标签:
在使用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用来直接转入或者自己创建新窗口吧。
标签:
原文地址:http://www.cnblogs.com/macher/p/4495234.html