如何在事件中传送字符串函数!!!

holydiablo 2003-09-25 05:04:10
实在是不好意思,一个看起来简单的问题把我搞倒了

就是我需要在ATL中创建一个ActiveX,其中有一个事件要返回两个参数
例:EventName(long Id,BSTR* FName)

但是在VB中使用时,会发生 Automation Error。但是同样的在一般方法中使用这个方式MethodName(long ID,BSTR* FName)就不会有问题,然后我又试着使用BSTR,也是不行的

而我在ATL直接写组件,不想使用MFC,望各位高手多多指点
...全文
43 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
holydiablo 2003-09-28
  • 打赏
  • 举报
回复
LPCTSTR
Onega 2003-09-27
  • 打赏
  • 举报
回复
返回两个参数用long*, BSTR*吧
你怎么解决的?
holydiablo 2003-09-27
  • 打赏
  • 举报
回复
终究还是靠自己解决了,不过还是感谢各位的帮助,结帖
holydiablo 2003-09-26
  • 打赏
  • 举报
回复
救命啊

很要紧的问题,各位高手快来帮忙
holydiablo 2003-09-26
  • 打赏
  • 举报
回复
多谢各位,但是这些方法我都试过了,不可以
Analyst 2003-09-25
  • 打赏
  • 举报
回复
EventName(long Id,BSTR* FName)
{
CString str("ok");
*FName = str.AllocSysString();
}
LazyCamel 2003-09-25
  • 打赏
  • 举报
回复
如果事件两个参数是要发送到客户端的数据,应该为
EventName(/*[in]*/long Id,/*[in]*/BSTR FName)
duqiang2050 2003-09-25
  • 打赏
  • 举报
回复
应该用BSTR,我据个例子:
//*******VC:

#include <comdef.h>
STDMETHODIMP Ctest::hello(long i, BSTR ss, long r)
{
// TODO: Add your implementation code here
_bstr_t s(ss,false);
MessageBox(0,s,"",0);
return S_OK;
}

//********VB调用:
Private Sub Form_Load()
Dim ss As New ATLTESTLib.test
Call ss.hello(1, "asdasd", 0)
End Sub

3,245

社区成员

发帖
与我相关
我的任务
社区描述
ATL,Active Template Library活动(动态)模板库,是一种微软程序库,支持利用C++语言编写ASP代码以及其它ActiveX程序。
社区管理员
  • ATL/ActiveX/COM社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧