【发布时间】:2011-01-06 09:18:42
【问题描述】:
我需要将CString 实例转换为正确分配的BSTR 并将该BSTR 传递给COM 方法。为了让代码能够同时为 ANSI 和 Unicode 编译和工作,我使用 CString::AllocSysString() 将任何格式 CString 转换为 Unicode BSTR。
由于没有人拥有返回的 BSTR,我需要处理它并在调用完成后以最安全的方式和尽可能少的代码释放它。
目前我使用ATL::CComBSTR 进行生命周期管理:
ATL::CComBSTR converted;
converted.Attach( sourceString.AllocSysString() ); //simply attaches to BSTR, doesn't reallocate it
interface->CallMethod( converted );
我不喜欢这里的是我需要两个单独的语句来构造绑定到转换结果的ATL::CComBSTR。
有没有更好的方法来完成同样的任务?
【问题讨论】:
标签: windows visual-c++ com atl bstr