[id(1), helpstring("OnMessage")] HRESULT OnMessage([in] BSTR bstrMsgXml, [in] VARIANT_BOOL bSMS,[out,retval] VARIANT_BOOL* bDisableMainAppRemind);对于上面的函数
_ATL_FUNC_INFO 值是多少

解决方案 »

  1.   

    _ATL_FUNC_INFO info = {CC_STDCALL, VT_HRESULT, 3, {VT_BSTR,VT_BOOL, VT_PTR|VT_BOOL} };
      

  2.   

    _ATL_FUNC_INFO Info =
       { CC_STDCALL, VT_HRESULT, 7,
       { VT_BSTR,VT_BOOL, VT_PTR|VT_BOOL,VT_BOOL|VT_BYREF }
      

  3.   

    写错了上面,应该是_ATL_FUNC_INFO Info = 
    { CC_STDCALL, VT_HRESULT, 7, 
       { VT_BSTR,VT_BOOL, VT_BOOL|VT_BYREF }
    }
      

  4.   

    补充,关键一点是:连接点是在VB ,python里调用的,这个指针怎么传递呀
      

  5.   

    不需要传递在VB中OnMessage是一个有2个参数,有返回值的函数。
    retval参数就是返回值。
      

  6.   

    连接点通常没有返回值,所以在设计事件接口时避免使用[out,retval]属性,直接改成[out]属性即可。这不是技术上的限制,而是因为返回值没有存在的意义,何况在连接多个客户端的情况下,返回值该使用谁的呢?从概念上来讲,连接点仅仅是一个事件通知的过程,无论对方是否关注这个事件,它确保把事件告知每个连接客户端,而不关心客户端如何处理事件。