COM编程中有如:BSTR,_bstr_t,CComBSTR等,以及它们和CString之间的关系,以及它们自己之间的关系是怎么样的啊?各位请指点一下小弟
解决方案 »
- 进度条更新问题
- 帮忙看条语句
- 不懂
- MFC 窗体在任务栏上方,怎么实现 ???
- 一台主机多台显示器的解决方法以及显卡编程!有高手请赐教!非常感谢!
- 如何在一个ActiveX控件中加入另一个ActiveX控件,分不够再加
- 关于动态链接库的Debug和Release版本的调用问题。(送100分!)
- error C4430: missing type specifier - int assumed. Note: C++ does not support de
- 接口的实现类,在构造函数中是否应该将引用计数置为1
- 如何更改VC工程文件的名字?
- 我现在可用分有9173分,如果哪个帮我解决了,要可以全部给.急急急
- 如何将VC++.NET的解决方案(*.sln)转换成VC++6.0的项目文件(*.dsp)?
BSTR包含长度前缀(length-prefixed),是以null(0)为结束符的OLECHAR字符串.
所有的BSTR都必须由"COM管理的内存分配器"来管理.COM提供了几个API:
//分配和初始一个BSTR
BSTR SysAllocString(const OLECHAR* psz);
BSTR SysAllocStringLen(const OLECHAR* psz,UINT cch);
//重分配和初始化一个BSTR
INT SysAllocString(BSTR* pbstr,const OLECHAR* psz);
INT SysReAllocStrinLen(BSTR* pbstr,const OLECHAR* psz,UINT cch); //释放一个BSTR
void SysFreeString(BSTR bstr); //将"length-prefix"转换为字符或byte
UINT SysStringLen(BSTR bstr);
UINT SysStringByteLen(BSTR bstr);2. _bstr_t和CComBSTR都是编译器封装类,都是为了更好地使用BSTR3. CString封装的字符串类型和_bstr_t,CComBSTR是不同的.