------好奇怪,为什么赋值不上??-------- 我要求是不能改变Test3中的参数啊!!!如果不是用这个参数的话,我早都没问题了。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 试试在OnButton3()中Test3((BSTR*)aa); 有没有搞错?这么用CString和BSTR?BSTR和CString的存储方式完全不同的。有很多类封装了BSTR,比如_bstr_t,COleVariant和CComBstr。建议使用这些类来传递BSTR字符串void CArraytestDlg::Test3(_bstr_t aa){CString bb="asdfasfd";aa=(LPCTSTR)bb; } jiangsheng说得对!其实我这个问题是在写ActiveX中遇到的,的确涉及到了COleVariant,只是发问的时候简化的给提了出来,以为差不多的,原来那么不同。我在ActiveX中定义了一个方法,其中参数是Test(BSTR FAR*name).Test(BSTR FAR* name){..... COleVariant layerVt; layerVt.ChangeType(VT_BSTR); layerVt=...... *name=layerVt.bstrVal; SysFreeString(layerVt.bstrVal); ....}其中检查过layerVt.bstrVal得到的值是真确的。但*name就不对了。在外部调用ActiveX的这个函数,发现name没有改变,就象我上面说的那样赋值不上。不知道问题出在哪里 :(( 先谢谢jiangsheng(蒋晟)了。关于这个问题,在c/c++版里的james_razor(蹬三轮的)这样回复:*((CString *)aa)=bb;如果针对我贴的第一篇情况,那问题是成功解决了,可以成功赋值。可是如果我照搬到ActiveX里时,外部程序调用这个ActiveX的这个方法时,出现内存"xxxx"不能写。faint!甚至我试过:CString xx=layerVt.bstrVal*((CString *)name)=xx;也时这样。不知道什么原因...又不是很想传个Variant,那样的话,外部调用会相对麻烦。还有什么办法吗? 传一段字符缓冲区buffer进来,buffer要够大。 问题解决了,最后采用*((CString *)aa)=bb;的方法完成。ActiveX里出的问题是由于我外部变量出错。:)多谢jiangsheng帮我想的多种解决方法!分数已经给出。谢谢。 VC2008下连接数据库出错 为什么VC 6.0下这个代码能跑 如何做出有滚动效果的文本显示? VC++如何侦听到Oracle插入,删除,修改操作呢 关于异步套接字发送数据的问题 CSDN的钟声怎么去掉? 如何得到扩展桌面的分辩率MFC下 如何分析别人的源程序呀? 如何判断IP是内外IP还是外网IP 编译器显示如下错误信息,请为是怎么回事,如何解决? MFC DLL的CDLLApp::InitInstance()有什么用? 计时器
Test3((BSTR*)aa);
有很多类封装了BSTR,比如_bstr_t,COleVariant和CComBstr。建议使用这些类来传递BSTR字符串
void CArraytestDlg::Test3(_bstr_t aa)
{
CString bb="asdfasfd";
aa=(LPCTSTR)bb;
}
其实我这个问题是在写ActiveX中遇到的,的确涉及到了COleVariant,只是发问的时候简化的给提了出来,以为差不多的,原来那么不同。我在ActiveX中定义了一个方法,其中参数是Test(BSTR FAR*name).
Test(BSTR FAR* name)
{
.....
COleVariant layerVt;
layerVt.ChangeType(VT_BSTR);
layerVt=......
*name=layerVt.bstrVal;
SysFreeString(layerVt.bstrVal);
....
}
其中检查过layerVt.bstrVal得到的值是真确的。但*name就不对了。
在外部调用ActiveX的这个函数,发现name没有改变,就象我上面说的那样赋值不上。
不知道问题出在哪里 :((
*((CString *)aa)=bb;如果针对我贴的第一篇情况,那问题是成功解决了,可以成功赋值。可是如果我照搬到ActiveX里时,外部程序调用这个ActiveX的这个方法时,出现内存"xxxx"不能写。faint!
甚至我试过:
CString xx=layerVt.bstrVal
*((CString *)name)=xx;
也时这样。
不知道什么原因...又不是很想传个Variant,那样的话,外部调用会相对麻烦。还有什么办法吗?
ActiveX里出的问题是由于我外部变量出错。:)多谢jiangsheng帮我想的多种解决方法!
分数已经给出。谢谢。