bstr 赋值
场景:对于VARIANT类型中BSTR型变量怎么赋值
对于VARIANT类型中BSTR型变量如何赋值
同上
------解决方案--------------------
强制赋值
BSTR aa;
CString bb;
bb=_T( "test ")
aa=BSTR(bb);
------解决方案--------------------
可能应该像下面这样:
TCHAR* szTemp;
VARIANT var;
var.vt = VT_BSTR;
#ifdef UNICODE
var.bstrVal = szTemp;
#else
USES_CONVERSION;
var.bstrVal = ::SysAllocString(A2W(szTemp));
#endif
// 使用完了之后
::SysFreeString(var.bstrVal);
------解决方案--------------------
楼上的正解,如果不是字符窜的话,可以使用SysAllocStringByteLen,同样使用完需要释放。
BSTR bstr = SysAllocStringByteLen(NULL, 100);
...
SysFreeString(bstr);
对于VARIANT类型中BSTR型变量如何赋值
同上
------解决方案--------------------
强制赋值
BSTR aa;
CString bb;
bb=_T( "test ")
aa=BSTR(bb);
------解决方案--------------------
可能应该像下面这样:
TCHAR* szTemp;
VARIANT var;
var.vt = VT_BSTR;
#ifdef UNICODE
var.bstrVal = szTemp;
#else
USES_CONVERSION;
var.bstrVal = ::SysAllocString(A2W(szTemp));
#endif
// 使用完了之后
::SysFreeString(var.bstrVal);
------解决方案--------------------
楼上的正解,如果不是字符窜的话,可以使用SysAllocStringByteLen,同样使用完需要释放。
BSTR bstr = SysAllocStringByteLen(NULL, 100);
...
SysFreeString(bstr);