描述:
初识COM,问题多多,苦于手头资料不够。
关于CComBSTR、BSTR、CcomVariant及_bstr_t的概念、使用以及它们之间的关系是什么,那伟大虾能够详解一下,或者告诉我哪里有,我自己去看也可以!多谢~~~~
解决方案1:
你用“BSTR”google一下,有好几篇讲的很好
解决方案2:我觉得BSTR就是个指针, 要手工分配释放内存。其他的都是类,可以自动构造释放。
解决方案3:xtuzi(雨人) 说得不对!!!而lcp(dupi) ,zhp80(zhp80) ,Analyst()都回答得很好,楼主可以结贴了。
解决方案4:BSTR 等同于WCHAR类型的字符串
解决方案5: BSTR = CComBSTR.Copy();
BSTR = CComBSTR.Detach( );
CComBSTR = BSTR;
CComBSTR.AppendBSTR(BSTR);
CComBSTR.Attach(BSTR);
_bstr_t = BSTR;
_bstr_t.Assign(BSTR); ---.net
_bstr_t.Attach(BSTR); ---.net
BSTR = _bstr_t.Copy();
BSTR = _bstr_t.Detach( ); ---.net
CString = BSTR;
BSTR = CString.AllocSysString();
BSTR = CString.SetSysString(&BSTR);
CComVariant = BSTR;
if (CComVariant.vt == VT_BSTR) BSTR = CComVariant.bstrVal;
BSTR WINAPI
SysAllocString
SysAllocStringByteLen
SysReAllocString
SysAllocStringLen
SysReAllocStringLen
SysFreeString
BSTR是一种文本数据类型,是包含长度前缀的OLECHAR字符串。
CComBSTR封装了BSTR,包括初始化,释放,拷贝,类型转化等。
有时,我们需要在对数据类型一无所知的情况下向它传递参数,这就要用到:
Variant,包含了数据类型和数据的值两个域;
CComVariant封装了Variant数据类型和相关的操作。
其实挺简单的,你把Variant看作是自己指定了类型的void就好了。
BSTR是原始类型,CComBSTR和_bstr_t是BSTR的C++封装类。_variant_t和CcomVariant是VARIANT的封装类。
另外_bstr_t要比CComBSTR好用。
可以转换
解决方案9:http://www.pcvc.net/category/content.asp?sendid=8
解决方案10: up