我自己做了个OCX,用在Office中实现一个小功能,控件中定义了几个Get/Set方法更新的属性,然后使用VC在后台打开Word,通过InvokeHelper(0x01, DISPATCH_PROPERTYGET, VT_BSTR, (void *)&m_strData, NULL)获取属性值,返回的却是空。但是有的属性也是这样出来的,就可以返回正确的值,劳驾各位给看一下,是控件本身的问题还是我这个VC小程序的问题啊?

解决方案 »

  1.   

    我试了一下,SHORT的属性都能读到值,就是BSTR的属性,个别少数可以读出来,大部分读不出来
      

  2.   


    [id(1), helpstring("属性 Author"), nonbrowsable] BSTR Author;
    [id(7), helpstring("属性 DocInfo"), nonbrowsable] BSTR DocInfo;Author的属性读出来了,DocInfo的就没读出来
      

  3.   

    你传的参数对吗?出错的话 HRESULT多少
      

  4.   

    传的参数对
    COleDispatchDriver::InvokeHelper
    void AFX_CDECL InvokeHelper(
       DISPID dwDispID,
       WORD wFlags,
       VARTYPE vtRet,
       void* pvRet,
       const BYTE* pbParamInfo,
       ... 
    );
    您说的HRESULT在哪里?
    对了,程序运行的时候没出错。
      

  5.   

    我现在碰到的问题很奇怪,同样定义的属性,赋值后使用InvokeHelper去读,有的能读出来,有的读出来的是空,不知道哪位碰到过类似的问题
      

  6.   

    怀疑是控件的问题。
    从InvokeHelper跟进去看看就知道了,源码面前无秘密。
      

  7.   

    m_wndFlash.SetVariable(_T("addresult"), strResult);
    是将strResult值付给flash的一个变量名字为“addresult”的变量
    但是我不知道在flash那边怎么定义,怎么写,大侠你给指点一下吧