在CHtmlView的OnBeforeNavigate2中可以得到将打开的URL的地址,保存下来该地址,在OnNewWindow事件中使用即可。

解决方案 »

  1.   

    OnBeforeNavigate2()是先于OnNewWindow()事件发生的,如果OnBeforeNavigate2对应的地址是一个JavaScript脚本,那我又怎么办呢?我直接使用JavaScript作为地址是不成的。
      

  2.   

    网页的地址只能在下载结束之后得到,因为使用rdirect/动态网页技术将使得请求地址和实际地址不一样。
    在网页下载结束后调用CHtmlView的函数即可。
      

  3.   

    看样子我的想法错了。那在OnNewWindow2(LPDISPATCH* ppDisp, BOOL* Cancel)中的ppDisp所指向的又是什么呢?
      

  4.   

    ppDisp是当前的webbrowser的指针。如果设置不对,系统将启动ie
      

  5.   

    msdn上说,ppDisp是指向新网页的指针,我想通过ppDisp获得新网页的网页地址,可试了半天也没成功,不知道有没有实现的可能。
      

  6.   

    ppDisp是你自己从CHtmlView派生出的视类的IDispatch指针,和网页地址没有任何关系。
      

  7.   

    那我如何获得将要打开网页的地址,要是在同一个浏览器中到没有问题,但如果链接中加入target="blank",打开新的浏览器,我又如何获得新浏览器的地址。因为对于某些链接可能是对应脚本的,用OnBefortNavigate2取到的也是对应的脚本内容,不能直接使用。
      

  8.   

    首先生成新的浏览器窗口,然后将新窗口指针传递给ppDisp
      

  9.   

    我在程序中是不知道新浏览器所要打开的Url地址的,将一个空的浏览器窗口指针传给ppDisp,会有作用吗?