打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
IConnectionPoint接口
IConnectionPoint接口充当组件所支持的引出接口的一个连接点。客户机程序正是使用该接口与引出接口
进行连接的。
组件所支持的每一个引出接口必须提供一个连接点(即实现了IConnectionPoint的一个对象)。通过它客户
机可以传送他的接口实现。
组件只在它的QueryInterface实现中向外公开一个IConnectionPointContainer接口,并且每个客户机程
序必须通过IConnectionPointContainer来获得一个引出接口的IConnectionPoint实现。 
我是使用CoMarshalInterThreadInterfaceInStream/CoGetInterfaceAndReleaseStream来做的,这需要你定义一个接口,比如我定义了一个:   
  
interface   IErrorMediator:IDispatch   
  {   
  [id(
1),   helpstring("method   FireErrorEvent")]   HRESULT   FireErrorEvent(long   nEventID,   long   wParam);   
  [id(
2),   helpstring("method   SetUpdaterInstance")]   HRESULT   SetUpdaterInstance(long   pUpdater);   
  };   
  然后,将这个接口Marshal给开的线程,线程内部通过调用   
  CoInitialize(NULL);   
  IErrorMediator   
*pErrorMediator=NULL;   
  HRESULT   hRes   
=CoGetInterfaceAndReleaseStream(pThis->m_pStream,IID_IErrorMediator,(LPVOID*)&pErrorMediator);   
  然后调用   
  pErrorMediator
->FireErrorEvent(DOWNLOADER_GET_REQUEST_FAILED,NULL);来发消息,   
    
  IErrorMediator的实现类再来Fire   Event   
  STDMETHODIMP   CErrorMediator::FireErrorEvent(
long   nEventID,   long   wParam)   
  {   
  
switch(nEventID)   
  {   
  
case   DOWNLOADER_FILE_DOWNLOAD_START:   
  {   
  strFileName
=(LPCTSTR)wParam;   
  m_pUpdater
->Fire_OnFileDownload(strFileName);   
                            
  
//Don't   forget   this     
  delete[]   (BYTE*)wParam;   
  }   
  
break;   
  ....   
  }
本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
COM Connection Points
如何对webbrowser和IE编程(八)
socket WSAAsyncSelect编程模型(非常好的例子)
VC/MFC 操作网页元素/动态改变网页控件状态
COM组件设计与应用(八)
来总结一下在VC中调用COM组件的方法
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服