如题,对于帮助者致以真心的谢意。
如果有必要,我自己会UP。
混分的不要企图在这里混,我不会给的。

解决方案 »

  1.   

    如果想新弹出自已的一个窗口的话很简单,如果想还在原来的窗口的显示的话,有一个BUG,就是当网页像CSDN的首页一样会用javascript弹出窗口,那么道页就加载不完了,中途被改为那个弹出的窗口.而且好像在newWindow2中没法在原来的窗口的显示,
    以前试过得用NewWindow,NewWindow事件有一URL参数,得到后用Navigate方法将当前窗口的webbrowser导航到这个URL
      

  2.   

    http://expert.csdn.net/Expert/topic/1555/1555235.xml?temp=.6381189
      

  3.   

    非常感谢!但是还有问题:
    1)VC中没有办法实现NewWindow事件,而且MSDN中说明的NewWindow事件的参数中也没有URL。
    2)NewWindow事件是被荒废了的事件,就算能用,用它也不爽啊。恳请继续指点。
      

  4.   

    我在msdn2001中没找到NewWindow的说明,在2003有,不过好像不对,2003是这样
    void NewWindow(          IDispatch **&ppDisp,
        VARIANT_BOOL *&Cancel
    );在VB中却是如下
    Private Sub a_NewWindow(ByVal URL As String, ByVal Flags As Long, ByVal TargetFrameName As String, PostData As Variant, ByVal Headers As String, Processed As Boolean)End Sub我用VB试过,可以达到目的,在VC下可能得用自己连接点来实现了,比较麻烦,我目前知道的实现这种效果的就只有NewWindow,如果不采用这种方法的话,得等高手来了.
      

  5.   

    你不会在NewWindow的时候做个标记,在BeforeNavigate的时候检察这个标记?
      

  6.   

    jiangsheng(蒋晟.Net) 
    我现在就是这样做的。很麻烦,希望能有更好的办法。
      

  7.   

    转抄:当网页通过脚本语句Window.open()打开新的连接时,这时候IE建立新的窗口用来浏览那个连接,并且不能阻止IE建立那个窗口,否则浏览操作将被取消。既然不能阻止,就让它建立吧(昨晚只记得想办法如何阻止IE建立新窗口,导致无法实现诺言,遗憾!!!),★★★只是在那个新的窗口显示之前关闭它★★★,这时候已经得到新窗口将准备浏览的那个连接URL,然后再调整其浏览方式就OK了。★注★:因为Window.open()总是建立一个新的窗口,所以只有浏览方式为"在当前网页打开"时上面代码才有意义,如果浏览方式不是这种类型,程序不做任何操作。
      

  8.   

    matq2008(叶子.net) :
    你好像没有明白我的意思,我是要让新的窗口的内容,在原来的窗口显示。原来的内容不要了。你说得好象是反了。
      

  9.   

    这么分析:
    如果有这个事件,将target="_self" 写进html文档中,用put_target
      

  10.   

    set ppDisp to the existing webbrowser object will result page to be opened in the same window
      

  11.   

    这是vb的:
    Private Sub WebBrowser1_NewWindow2(ppDisp As Object, Cancel As Boolean) 
         Set ppDisp = WebBrowser1.Object 
        End Sub 
    应该意思差不多吧
      

  12.   

    我这样做了,但是什么也没有发生,浏览器内容没有变化,也没有弹出窗口。
    单步跟踪运行轨迹正常,清高手指点!BEGIN_EVENTSINK_MAP(CPortalDlg, CDialog)
    ON_EVENT(CPortalDlg, IDC_WEBBROWSER_ALFA, 251, OnWebBrowserNewWindow2, VTS_PDISPATCH VTS_PBOOL)
    END_EVENTSINK_MAP()void CPortalDlg::OnWebBrowserNewWindow2(LPDISPATCH* ppDisp, BOOL* Cancel)
    {
    // TODO: Add your message handler code here
    LPUNKNOWN  lpUnknown = this->m_pWebBrowserForeground->GetControlUnknown();
    LPDISPATCH lpDispatch;
    if (SUCCEEDED(lpUnknown->QueryInterface(IID_IDispatch, (void**)&lpDispatch)))
    {
    *ppDisp = lpDispatch;
    *Cancel = FALSE;
    }
    else
    {
    *Cancel = TRUE;
    }
    }
      

  13.   

    Knowledge Base  BUG: Using NewWindow or NewWindow2 to Always Navigate in the Same Window Fails in Some Instances
    void CIEDlg::OnNewWindow2(LPDISPATCH FAR* ppDisp, BOOL FAR* Cancel) 
    { IUnknown* pUnk = m_Browser.GetControlUnknown();
    if (pUnk)
    {
    IDispatch* pDisp = NULL;
    HRESULT hr = pUnk->QueryInterface(IID_IDispatch, (void**)&pDisp); if (SUCCEEDED(hr) && pDisp)
    *ppDisp = pDisp;
    }
    }
      

  14.   

    Some Instances有没有详细一点的介绍?
    应该有一定规律吧?
    thanks
      

  15.   

    If you use NewWindow2, the following code fails in all versions of the Internet Explorer: ==============================================================================
    void CIEDlg::OnNewWindow2(LPDISPATCH FAR* ppDisp, BOOL FAR* Cancel) 
    { IUnknown* pUnk = m_Browser.GetControlUnknown();
    if (pUnk)
    {
    IDispatch* pDisp = NULL;
    HRESULT hr = pUnk->QueryInterface(IID_IDispatch, (void**)&pDisp); if (SUCCEEDED(hr) && pDisp)
    *ppDisp = pDisp;
    }
    }