My idea:
按com的Apartment理论,公寓间时不能直接传递指针的,
不如自己做调度吧Stream* pStream = NULL;
hr = ::CoMarshalInterThreadInterfaceInStream( 窗口的Interdface ID, 
(LPUNKNOWN)(void *)this,
&pStream);这样参数就传到了pStream;
我们把pStream传给COM,在COM接这个流时:
hr = ::CoGetInterfaceAndReleaseStream(pStream, 
      window的Interdface ID, (void **) &pWnd));

解决方案 »

  1.   

    对于微软的ACTIVEX控件,微软缺省的做法是以OleInitialize把该ACTIVEX控件纳入单线程套间(STA),所以即使web browser控件定义的Threading Model = "both",但是当你新建一个线程去访问由另一个线程创建的web browser控件实例的接口时仍然是跨套间访问,COM对象的跨套间访问必须实现接口的列集和散集,具体做法和楼上那位大哥的一致。