各位请教了:
    请问如何在ATL中给一个BSTR类型的变量赋值,尤其是将一个byte型的数组,里面放的是ASC码,付给BSTR的变量,(因为使用ATL作的DLL,而此DLL是在VB中使用,而BSTR在VB中是String型,所以要让在VB中得到String正是通过BSTR传递的byte型数组中的ASC码)。
    请教各位了,能给举个例子吗,非常感谢了

解决方案 »

  1.   

    #include "Atlconv.h"
    byte b[20];
    ...
    BSTR br=A2BSTR((const char*)b);
      

  2.   

    可以使用下面的方法
    BSTR bstr1 = _com_util::ConvertStringToBSTR("1233sdfa");
    BSTR bstr2 = SysAllocString(L"12345sdlf");使用第一种方法,要用到头文件 comutil.h 和 库文件 comsupp.lib有点要注意的是从BSTR转换成char时要注意内存泄漏
    即 BSTR bstr1 = _com_util::ConvertStringToBSTR("1233sdfa");
       char *szBuf = _com_util::ConvertBSTRToString(bstr1);这里一定要使用 delete []szBuf;
    不然会发生内存泄漏
      

  3.   

    _bstr_t Name = (char*)ByteArray;
    BSTR tmp = Name.copy();
      

  4.   

    谢谢大家了,但是请问为什么用了以下的方法之后br显示的结果除了b中的20个字符以外,后面还跟了很多乱码,能控制的更好吗,去掉这些乱码,怎么办呢?还有就是如何才能将BSTR中的字符复制给一个字节型的数组呢,谢谢各位了
    #include "Atlconv.h"
    byte b[20];
    ...
    BSTR br=A2BSTR((const char*)b);
      

  5.   

    byte b[21]
    b[20] = '\0';BSTR br = A2BSTR((const char*)b);   //A2BSTR这个东东有大小限制吧?你还是用wzhing(从不留言)的方法比较好些,偶觉得。你的第二个问题从wzhing(从不留言)中也可以解决的,你仔细看一下吧。