代码之家  ›  专栏  ›  技术社区  ›  Dmitry Mukhin

我可以从DISPPARAMS获取正确的IDispatch吗?

  •  0
  • Dmitry Mukhin  · 技术社区  · 17 年前

    然后将指针投射到

    例如,在javascript中,我想做这样的事情:

    var x = external.obj.x;
    var y = external.obj.y;
    external.obj.x = y;
    

    和 .

    STDMETHODIMP CMyDispatch::Invoke(DISPID dispIdMember, REFIID, LCID, WORD wFlags,
                                     DISPPARAMS* pDispParams, VARIANT* pVarResult,
                                     EXCEPINFO*, UINT*) {
      if( pVarResult )
      {
        CMyDispatch* pDisp = new CMyDispatch();
        CComVariant val( pDisp );
        val.Detach( pVarResult );
      }
      return S_OK;
    }
    

    在 CMyDispatch。调用() 和

    STDMETHODIMP CMyDispatch::Invoke(DISPID dispIdMember, REFIID, LCID, WORD wFlags,
                                     DISPPARAMS* pDispParams, VARIANT* pVarResult,
                                     EXCEPINFO*, UINT*) {
      ASSERT( pDispParams->cArgs == 1 );
      ASSERT( VT_DISPATCH == pDispParams->rgvarg[0].vt );
      IDispatch* pDisp = ( pDispParams->rgvarg[0].pdispVal ); // <-- garbage
      CMyDispatch* pDispatch = (CMyDispatch*) pDisp; // <-- garbage
      return S_OK;
    }
    

    指针?

    1 回复  |  直到 17 年前
        1
  •  1
  •   Kim Gräsman    17 年前

    推荐文章