有挑战的事件问题

scxy 2004-12-05 12:12:35
一个COM事件接口包括3个事件函数,分别是1、2、3
在使用COM组件的客户端程序里分别有两个类a、b类接收这些事件
a接收1、2事件
b接收3事件

a可以正常接收但b接不到事件3

如果把事件3放到a中来接收(此时b也在接收)则a和b都可以正常接收了


COM组件采用ATL写的
响应客户端是一个MFC的对话框程序,由MFC的方式响应(即AfxConnectionAdvise这组函数写的)
使用VS2003
...全文
250 16 打赏 收藏 转发到动态 举报
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
GetProvider 2005-01-24
  • 打赏
  • 举报
回复
这应当是你的事件接收器代码有问题"AfxConnectionAdvise"必须被使用2次,以确保a和b事件接收器同时都能与服务器的事件连接点联系上。
scxy 2005-01-12
  • 打赏
  • 举报
回复
对,我也怀疑是MFC事件相应的问题,我测试过ATL响应事件的方式,就可以做到我说的,不一定实现所有的事件

但我的工程是MFC,又不想为了这个问题再添加一个专门的响应实例,希望看在MFC的响应方式总找到解决方法
XXandOO 2005-01-10
  • 打赏
  • 举报
回复
一个类实现了事件接口,就要编写事件函数的所有实现,所以不管a,b都应该实现所有事件函数,你这样的设计方法就不对。
hxblvc 2005-01-10
  • 打赏
  • 举报
回复
学习...
XXandOO 2005-01-10
  • 打赏
  • 举报
回复
不好意思,我刚试了一下,在ATL里这样是可以的,当不实现某个事件函数时,相当于空实现并返回S_OK。是不是MFC的实现方法有什么不同?实在不行你可以在a里加一个3的空实现嘛。
scxy 2005-01-08
  • 打赏
  • 举报
回复
再推一下
oyljerry 2004-12-07
  • 打赏
  • 举报
回复
检查一下你的组件,分开来一个个测试
scxy 2004-12-07
  • 打赏
  • 举报
回复
组件是用VC7 ATL建立的简单组件
时间发出是使用__raise发出的
leky2000 2004-12-07
  • 打赏
  • 举报
回复
a接收1、2事件
b接收3事件

a可以正常接收但b接不到事件3

如果把事件3放到a中来接收(此时b也在接收)则a和b都可以正常接收了

这时候b岂不是没有事件接收? 但a却接收3个事件? 这说明什么?说明问题就在b里
hithyy 2004-12-07
  • 打赏
  • 举报
回复
建议把代码贴上来分析一下
天限天空 2004-12-05
  • 打赏
  • 举报
回复
跟踪 事件代理 函数

1 确定是否都通知了 a 和 b,
2 确定在事件代理 函数中,在通知时,IUnknown * 是否有效,那个连接点的 cookie 就是 (LONG)IUnknown*

这个很容易跟踪出来的
UDX协议 2004-12-05
  • 打赏
  • 举报
回复
估计和你的组件类别有关。
看看套件,希望对你有帮助。
Trashy 2004-12-05
  • 打赏
  • 举报
回复
关注一下!
lzlbj 2004-12-05
  • 打赏
  • 举报
回复
byouwenti
EnochShen 2004-12-05
  • 打赏
  • 举报
回复
把发送和接收事件的代码贴上来看看吧,你这么光说怎么解决?
scxy 2004-12-05
  • 打赏
  • 举报
回复
大家帮下忙,UP一下也给分

3,245

社区成员

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

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