VC++对话框程序中
先定义IWebBrowser对象
CWebBrowser2 m_IECtrl
在void CHTMLDlg::OnInitDialog()中初始化
m_IECtrl.Navigate(_T("http://www.baidu.com/"), NULL, NULL, NULL, NULL);//连接到百度主页
现添加一按钮连接新的连接
void CHTMLDlg::OnButtonLinkurl() 
{
    m_IECtrl.Navigate(_T("http://www.yahoo.cn/"), NULL, NULL, NULL, NULL);//连接到雅虎主页
    MessageBox(m_IECtrl.GetLocationURL());
    //后面的内容是对雅虎主页进行操作,但得到的数据一致是百度主页的数据
    CComPtr<IHTMLElementCollection> spElemColl;
    LPDISPATCH pDocDispatch = m_IECtrl.GetDocument();
    CComQIPtr<IHTMLDocument2, &IID_IHTMLDocument2> spDoc;
    spDoc = pDocDispatch;
    spDoc->get_all(&spElemColl);
   

问题来了:
 对话框中的IE控件界面已连接到雅虎的主页,而MessageBox(m_IECtrl.GetLocationURL())里面显示的是"http://www.baidu.com/",包括后面得到的数据都是百度主页的数据,请高手指导怎么得到雅虎主页的数据?

解决方案 »

  1.   

    要先判断网页是否已经加载完毕。
    OnDocumentComplete
      

  2.   

    CHTMLDlg应该有 WM_DocumentComplete 消息吧。响应该消息,并判断当前URL。
      

  3.   

    在资源视图中对webbrowser控件右击,选择添加事件,然后选择DocumentComplete事件
      

  4.   

    还有个问题,当生成一个新的窗口时,怎么在自己的WebBrowser上打开,完成结贴
      

  5.   

    你说的新窗口指的是什么
    任意浏览器的在新窗口打开还是自己的WebBrowser打开连接是在新窗口打开
    第一种情况比较麻烦
    第二种情况可以处理OnBeforeNavigate2中将连接重定向到你自己的WebBrowser
      

  6.   

    自己的WebBrowser打开新窗口,能否给出具体实例
      

  7.   

    这是一段冲定位的代码
    你可以参考一下
    处理的是OnNewWindow2
    先前记错了
    不好意思
    void CGPHtmlCtrl::OnNewWindow2(LPDISPATCH* ppDisp, BOOL* Cancel)
    {
    CGPHtmlPopDlg* pFrame = new CGPHtmlPopDlg;
    pFrame->Create(IDD_HTMLPOP, GetParent());
    pFrame->_htmlContent.SetRegisterAsBrowser( TRUE );
    *ppDisp = pFrame->_htmlContent.GetApplication();
    pFrame->CenterWindow();
    pFrame->ShowWindow(SW_SHOW);
    }