ActiveX的属性用VB可以调用成功,VC调用出错?
巍巍清风 2007-06-21 08:46:09 有一个第三方的ActiveX控件,有一个属性返回一个 BSTR 类型的字符串,使用VB调用它的时候,完全正常,返回的字符串是ANSI的字符串。在VC里调用它的时候,有些字符竟然显示成了'?'号,比如:本来应该是 "g123458 b2321" 的,得到的结果却是 "?23458 ?321"。
奇哉怪哉!从现象上看像是UNICODE相关的错误,然而不管是不是定义了 _UNICODE 符号,都仍然返回问号。而且,VB能得到正常返回值的,VC没理由不行。实在不明白错在哪里。头发都急白了…
属性在IDL里的声明如下:
[id(0x0000001b), propget]
BSTR rCode();
在VC里自动生成的封装为:
CString GetRCode();
对调用的封装实现为:
CString CPpocx::GetRCode()
{
CString result;
InvokeHelper(0x1b, DISPATCH_PROPERTYGET, VT_BSTR, (void*)&result, NULL);
return result;
}
经跟踪,执行了InvokeHelper后,result的值就带了问号的,已经不正常了。
哪位大虾遇到过类似的问题?恳请留下指导意见,不胜感激!
给不了太多分,如果经过指导得以解决,另开贴赠分,先谢谢了!