none
如何紧接着CWebbrowser::Navigate 执行click事件。紧接着执行click事件貌似无法执行到navigate RRS feed

  • 问题

  • 我是在一个对话框程序里面使用CWebbrowser控件浏览网页,遍历,模拟用户点击

    在OnInitDilog里面使用Navigate到一个页面,然后我在一个button里面添加函数,执行下面一段代码

     

     for(...) 
    
    {
    
      string url = "http://www.ip985.com/main.php?ym=";
      url.append(m_pUrl[i]);
      m_myWeb.Navigate(url.c_str(),NULL,NULL,NULL,NULL);
      ::AfxMessageBox("SSSS");
    /*问题就在这里 具体在帖子下面,本来在这添加 但是...*/
     m_pdisp = m_myWeb.GetDocument(); hr = m_pdisp->QueryInterface(IID_IHTMLDocument2,(void**)&m_pDoc); if(FAILED(hr)) {::AfxMessageBox("Get m_pDoc failed !");break;} ............ pElem->click();//pElem存储遍历到的超链接,模拟用户点击<br/> <br/> ::AfxMessageBox("click");<br/> }
      

     

     


     注释*    如果这里不添加messagebox的话 下面的程序会执行到,并且弹出了MessageBox("click")的弹窗,但是却没有页面却没有变化

        如果添加了这个messagebox  点击效果发生,但是却没有执行url这个链接里面的点击,执行的是OninitDialog里面初始化时候页面遍历到的超链接的点击事件
         我感觉是这个函数里面的m_myWeb.Navigate(url.c_str(),NULL,NULL,NULL,NULL);根本没有执行到。现在很困惑 希望高手指点 

         谢谢


    i am a new mfcer , i believe that i will be a good programmer!
    2011年7月20日 15:11

答案

  • WebBrowser的浏览是异步的。你需要等待浏览器触发DocumentCompleted事件

    The following is signature, not part of post
    Please mark the post answered your question as the answer, and mark other helpful posts as helpful, so they will appear differently to other users who are visiting your thread for the same problem.
    Visual C++ MVP
    • 已标记为答案 newmfcer 2011年7月22日 17:49
    2011年7月20日 16:10
    版主