ATL COM事件问题:在线程中调用虚函数,再在虚函数中激发事件的问题??

tigerfox 2004-08-18 04:51:23
class CA
{
..
..
CB b;
CB c;
void fun();
}

CB b
{
virtural int fun();
CA *pa;
}

int CB::fun()
{
pa->fuc2();
}

void CA::fun()
{
Fire_XXX();
}

Fire_XXX事件已调用,但前端没有事件激活???
...全文
197 23 打赏 收藏 转发到动态 举报
写回复
用AI写文章
23 条回复
切换为时间正序
请发表友善的回复…
发表回复
tigerfox 2004-08-21
  • 打赏
  • 举报
回复
我已经解决了。


to jiangsheng(蒋晟.MSMVP2004Jan)
你要是早来点多好啊。
sohou 2004-08-19
  • 打赏
  • 举报
回复
我看了你的代码我没发现你的代码有什么问题,但是我怀疑你的script写的那个test有问题。我对script不熟
蒋晟 2004-08-19
  • 打赏
  • 举报
回复
MFC/ATL列集/散列的代码没有考虑跨线程调用。你需要自己实现列集/散列,例如发送自定义消息消息或者自行修改列集/散列代码。
参见http://www.mvps.org/vcfaq/com/1.htm
tigerfox 2004-08-19
  • 打赏
  • 举报
回复
接收到了。我在方法内激活事件就没问题。但到了线程内就不行了。
wangweixing2000 2004-08-19
  • 打赏
  • 举报
回复
看来是你的客户端没有接收这个事件!
yongdu 2004-08-19
  • 打赏
  • 举报
回复
线程内当然不行。因为你接口跨了套间。跨套间调用要列集/散列接口。即使是事件接口。
最简单的方法(也是最流行的),是你在将你的Fire,改为postthreadmessage给主线程消息, 再由主线程fire(主线程建立的事件连接)
sohou 2004-08-18
  • 打赏
  • 举报
回复
我没收到你的邮件
tigerfox 2004-08-18
  • 打赏
  • 举报
回复
我对COM不是很熟啊。
sohou 2004-08-18
  • 打赏
  • 举报
回复
如果是VC的话你自己hook它
sohou 2004-08-18
  • 打赏
  • 举报
回复
你客户端是用什么语言写的啊!
tigerfox 2004-08-18
  • 打赏
  • 举报
回复
TO: sohou(大秦之刃)
帮我看看。
tigerfox 2004-08-18
  • 打赏
  • 举报
回复
还是不行呀。
sohou 2004-08-18
  • 打赏
  • 举报
回复
只实现它的Idispatch接口
sohou 2004-08-18
  • 打赏
  • 举报
回复
不要将源接口实现为双接口,也就是那个event接口,这样在VB 和SCRIPT语言中很容易出错
sohou 2004-08-18
  • 打赏
  • 举报
回复
这和你的函数没有关系,你的连接点设置正确了吗?Events接口设对了吗/你先自己检查一下。用VC 6的ATL向导生成的程序有些有问题,你自己好好检查吧,实在不行发给我:sohou_studio@163.com
tigerfox 2004-08-18
  • 打赏
  • 举报
回复
没人知道?
sohou 2004-08-18
  • 打赏
  • 举报
回复
你映射了相应的事件了吗?
tigerfox 2004-08-18
  • 打赏
  • 举报
回复
我希望解决问题啊。谁知道啊
rwdx 2004-08-18
  • 打赏
  • 举报
回复
gz
xiaoleixyz 2004-08-18
  • 打赏
  • 举报
回复
mark,想想
加载更多回复(3)

3,245

社区成员

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

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