多框架网页好像会有多个DocumentCompleted事件发生哦!

解决方案 »

  1.   

    //Get the point of current frame
    CComQIPtr<IWebBrowser2, &IID_IWebBrowser2> pDisp;
    pDisp = pDispParams->rgvarg[1].pdispVal;CComQIPtr<IUnknown, &IID_IUnknown> pUnkDisp;
    pUnkDisp = pDisp;//Get the point of top frame
    CComQIPtr<IUnknown, &IID_IUnknown> pUnkBrowser;
    pUnkBrowser = m_pWebBrowser2;//m_pWebBrowser2 is IWebbrowser2 of webbrowser2if(pUnkBrowser == pUnkDisp)
    {
    //All the document completed
    }
    else
    {
    //A frame completed
    }
      

  2.   

    OnProgressChange   -1 for all complete
      

  3.   

    看看这个
    也许对你有帮助
    http://support.microsoft.com/kb/180366/
      

  4.   

    需要判断DocumentCompleted事件的DISPATCH的IUNKNOWN接口,是否就是顶层框架的IUNKNOWN接口,如下,我使用的是HTMLEDITCTL BASE,其他的也一样。都是封装了WEBBROWSE控件。
    void CToobView::OnDocumentCompleteBrowse(LPDISPATCH pDisp, VARIANT FAR* URL) 
    {
        HRESULT hr;
        IUnknown* pUnkBrowser = NULL;
        IUnknown* pUnkDisp = NULL;
    LPUNKNOWN lpunk =m_browse.GetControlUnknown();
    IWebBrowser2* pbrowserapp;
        hr = lpunk->QueryInterface(IID_IWebBrowser2, (void**) &pbrowserapp);
    if(SUCCEEDED(hr))
    {
    hr=pbrowserapp->QueryInterface(IID_IUnknown, (void**)&pUnkBrowser ); 
    if(SUCCEEDED(hr))
    {
    hr= pDisp->QueryInterface(IID_IUnknown, (void**)&pUnkDisp ); 
    if(SUCCEEDED(hr)) 

    if(pUnkBrowser==pUnkDisp)
    {已经完成