BSTR
考虑到兼容性和传输。CString ss(BSTR);//BSTR->CStringBSTR=ss.AllocSysString();//CString->BSTR

解决方案 »

  1.   

    接口定义要用BSTR,
    比如:这是我做的一个接口
    STDMETHODIMP CEmlAnalyse::get_Subject(BSTR *pVal)
    {
        char tempbuf[]= "I am text!";
        BSTR m_bstrText;
        m_bstrText = _com_util::ConvertStringToBSTR (textbuf);
        *pVal = m_bstrSubject;
        return S_OK;
    }
    vc的客户端可以这样的应用该接口:
    BSTR text;
    pIntf->get_Subject(&text);
    char *textbuf = _com_util::ConvertBSTRToString(text);
    //here textbuf 为:I am text!注意:在应用ConvertBSTRToString和_com_util::ConvertStringToBSTR 
    的时候要添加
    #include "comutil.h"
    #include "comdef.h"
      

  2.   

    to dockbar(dock) :
    对阿,分别嘛。随便举一个别的例子嘛。比如CString,说说嘛。。
      

  3.   

    可以用转换宏:
    BSTR A2WBSTR(LPCSTR lp, 
     BSTR A2BSTR(LPCSTR lp) 
     BSTR A2BSTR(LPCSTR lp) 
     BSTR T2BSTR(LPCTSTR lp)
     BSTR A2BSTR(LPCSTR lp) 
      

  4.   

    可以用转换宏:
    #define A2CW(lpa) ((LPCWSTR)A2W(lpa))
    #define T2COLE(lpa) A2CW(lpa)
    #define T2OLE(lpa) A2W(lpa)
    inline LPOLESTR A2OLE(LPSTR lp) { return lp;}
    #define OLE2W A2W
    inline LPCOLESTR A2COLE(LPCSTR lp) { return lp;}
    #define OLE2CW A2CW
    #define A2OLE A2W
    #define A2COLE A2CW
    #define A2T A2W
    #define A2CT A2CW
    #define T2W A2W
    BSTR A2WBSTR(LPCSTR lp, 
     BSTR A2BSTR(LPCSTR lp) 
     BSTR A2BSTR(LPCSTR lp) 
     BSTR T2BSTR(LPCTSTR lp)
     BSTR A2BSTR(LPCSTR lp) A既是LPCSTR B 既是OLECHAR*,C表示是常量,