为什么VB和C++ Builder调VC ATL写的ActiveX控件结果正确,而用VC调用结果却是错的呢?
我写的ActiveX控件ATest有一个如下方法:
STDMETHODIMP CATest::ShowStr(BSTR bstrStr)
{
_bstr_t bstr=bstrStr;
LPSTR str=(TCHAR*)bstr;
/*还用过
CComBSTR bstr=bstrStr;
CString str(bstr);
的方法*/
MessageBox(str);
}
VB调用如下:
ATest1.ShowStr "VB Test!"
弹出的MessageBox都很正常
C++ Bulider调用如下:
wchar_t* wstr=new wchar_t[30];
String str="C++ Bulider Test!";
str.WideChar(wstr,30);
ATest1->ShowStr(wstr);
弹出的MessageBox也很正常
VC调用如下:
//m_ATest定义:CATest m_ATest;
m_ATest.ShowStr(_bstr_t("VC Test!"));
/*还用过
CString str="VC Test!";
BSTR bstr=str.AllocSysString();
m_ATest.ShowStr(bstr);
的方法*/
可是弹出的MessageBox中都是只有第一个字母V