2011년 1월 11일 화요일

BSTR CString char* CComVariant VARIANT

BSTR <-> CString

CString BSTRToCString(BSTR bstr)
{
    char* pbstr;
    USES_CONVERSION;    // <atlconv.h>, convert를 위한 macro
    pbstr = OLE2A(bstr);      // BSTR -> char
    return CString(bstr);
}

BSTR CStringToBSTR(CString str)
{
    return str.AllocSysString();    // CString to BSTR
}


 
BSTR <-> char*

// BSTR to char*
BSTR
 bstr
char* pbstr;
USES_CONVERSION;    // <atlconv.h>, convert를 위한 macro
pbstr = OLE2A(bstr);      // BSTR -> char

// char to BSTR
TCHAR szString[512];
_bstr_t
 bstr_string = szString;
BSTR bstr

*bstr = bstr_string.copy();


 
CString <-> CComVariant

// CString -> CComVariant
CString str;
CComVariant
 out(str.AllocSysString());
or
CComVariant out(str);

// CComVariant -> CString
str = out.bstrVal;


 
VARIANT

VARIANT BSTRToVARIANT(BSTR bstr)
{
    VARIANT var;
    VariantInit
(&var)
    V_BSTR(&var) = SysAllocString(&bstr);
    V_VT(&var) = SysAllocString(&bstr);
    return var;
}

 

댓글 없음:

댓글 쓰기