问题1 线程中执行
CComPtr<IHTMLDocument2> m_spHtmlDoc;
CComPtr<IDispatch>& spDisp;
m_spHtmlDoc =  (IHTMLDocument2*)(GetHtmlDocument());
HRESULT hr = m_spHtmlDoc->get_Script(&spDisp);这句会出错HRESULT hr = m_spHtmlDoc->get_Script(&spDisp);如果不在线程中就是对的。好像是COM的引用计数问题 ,如何解决呢?问题 2
  我用MFC程序调用了js的脚本,调用的是 google map api 的函数 panby (就是移动地图),但是这个函数不是阻塞函数,我的MFC程序需要和这个函数进行同步处理。也就是在地图移动完成之后做一些处理。 应该怎么同步呢?。麻烦大家乐。

解决方案 »

  1.   

    1.主线程获取m_spHtmlDoc ,然后传递到线程中处理
    2.你调用js函数后WaitForSingleObject等等待,自己设置一个事件等来进行同步
      

  2.   

    问题2中,Google Map是通过Ajax的,无法实现程序控制地图的移动成功与否。
    只能自己等待一个理论时间。
      

  3.   

    1、COM对线程敏感,如果需要在其它线程中使用接口,需要列集和散列步骤。
    2、AJAX同步是依靠回调属性完成的,你需要读懂API的代码,找到设置回调的地方。