我正在使用IWebBrowser2使用c ++开发Web浏览器。声明在顶部,在任何范围之外,我有这个:
static char buf[1024];
在documentcomplete事件中,我将BSTR设置为:
CComBSTR bstrHTMLText;
X->get_outerHTML(&bstrHTMLText);
我想要做的是将bstrHTMLText值复制到buf中(如果bstrHTMLText长度> 1024则只填充buf并忽略其余部分)。每次文件完成时都会触发。
我该怎么做?
答案 0 :(得分:1)
BSTR
秘密地是指向Unicode字符串的指针,隐藏长度前缀位于字符串数据的前面。因此,您可以将其强制转换为wchar_t*
,然后将该宽字符字符串转换为ANSI字符串,例如使用WideCharToMultiByte
:
WideCharToMultiByte(CP_UTF8,
0,
bstrHTMLText.m_str,
SysStringLen(bstrHTMLText.m_str),
buf,
sizeof(buf),
NULL,
NULL);