添加自动化方法的时候,发现方法的返回值没有CString类型。但是我看到别人做的控件返回的是CString类型,不知道是怎么做的。我用的是VC6.0。
另有人说用BSTR,不知道怎么用法,希望有经验的告诉。多谢啦

解决方案 »

  1.   

    ...好像无法返回CSTRING 好像因为 CSTRING 是MFC的 如果是JAVA好像没法在网页中使用。用char* 把 也是字符串 或者 VARIANT 结构体 猜测而已
      

  2.   

    char* 没有,BSTR是 Wchar * 类型的,没用过,不知道咋用。BSTR直接转char*可以吗?
      

  3.   

    你让接口返回BSTR*,就搞定了。
    然后你把控件添加到工作,会自动生成包装类,返回的参数刚好是CString
    CString是可以用来做字符串编码转换的,它不管是在ansi还是unicode版本下面,都直接对其赋char*或者wchar*,难道这功能大家没用过?
      

  4.   

    多谢三楼指点了。返回BSTR*不是BSTR?另外需要在客户程序里面释放内存不?
      

  5.   

    刚试过了,返回BSTR的时候,VC自动生成的包装类是CString。但是有个问题:返回的时候,用了AllocSysString()函数,那要不要在客户程序里面调用::SysFreeString()来释放内存?
    我查了MSDN,上面的原话是这样说的:Use ::SysFreeString in the rare case that you need to deallocate the returned string.
    在极少数情况下你需要用::SysFreeString来释放返回字符串。那么,什么是极少数情况?一般情况下不需要释放返回字符串的内存?希望有经验的告知
      

  6.   

    回6楼,不要释放,好像是COleControl或者CWnd做了,你可以放心使用。
    因为是被MFC封装过一层的,所以才是这样。
    如果你调用一个裸的COM接口,返回BSTR,是需要释放的。
      

  7.   

    用BSTR可以转化为CString
    _bstr_t to CString