_bstr_t在VC中是为了兼容BSTR类型而增加的,也就是为了实现LPCSTR与BSTR转换。
它需要头文件#include <comdef.h>
_bstr_t 是BSTR的包装类
转换方法
LPSTR strDemo="Test";
_bstr_t bstr(strDemo);
建议加上try,catch,用于catch(_com_error &e)
The following pseudocode shows the typical use of CComBSTR:
HRESULT CMyObject::MyMethod(IOtherObject* pSomething) { CComBSTR bstrText(L"Hello"); bstrText += " again"; // LPCSTR conversion bstrText.ToUpper(); pSomething->Display(bstrText); // [in] parameter MessageBoxW(0, bstrText, L"Test", MB_OK); // Assumes Windows NT } As you can see, CComBSTR significantly simplifies the use of BSTRs. Four uses of CComBSTR, however, require special care:
当在BSTR*所在的位置作为一个[out]参数传递CComBSTR时,你必须先调用Empty释放string的内容,就象下面这样: HRESULT CMyObject::MyMethod2(ISomething* p, /*[out]*/ BSTR* pbstr) { CComBSTR bstrText; |