CComVariant  和 CString 怎么轉化呀?急!
小妹先謝謝了

解决方案 »

  1.   

    CString str = (char *)_bstr_t(var);
      

  2.   

    v1 = (_bstr_t) str
    str = _com_util::ConvertBSTRToString((_bstr_t)v1);
      

  3.   

    //From CComVariant to CString:    USES_CONVERSION;
        CString cstrDest;
        HRESULT hr;
        VARIANT vStr;
        VariantInit(&vStr);
        CComVariant varStr((LPCSTR)"Hello World");
        hr = varStr.Detach(&vStr);    if (S_OK == hr)
        {
    cstrDest = OLE2A(vStr.bstrVal);
        }// From CString to CComVariant
        CString cstrSrc = "Hello World";
        CComVariant varStr((LPCTSTR)cstrSrc);
      

  4.   

    少了一行代码
    //From CComVariant to CString:    USES_CONVERSION;
        CString cstrDest;
        HRESULT hr;
        VARIANT vStr;
        VariantInit(&vStr);
        CComVariant varStr((LPCSTR)"Hello World");
        hr = varStr.Detach(&vStr);    if (S_OK == hr)
        {
    cstrDest = OLE2A(vStr.bstrVal);
        }
        
        // Without this line, there will be a potential memory leak.
        VariantClear(vStr);
      

  5.   

    如不是BSTR类型,要先转到BSTR
    用VariantChangeType
    VT_EMPTY不可转换
      

  6.   

    CComVariant var;
    CString str;....if (var.vt != VT_NULL || var.vt != VT_EMPTY)
    {
    var.ChangeType(VT_BSTR);
    str = var.bstrVal;
    }
    else
    {
    str = _T("");
    }