您的位置:程序门 -> vc/mfc -> 进程/线程/dll



dll 中如何触发onreceive事件?急!


[收藏此页] [打印本页]选择字色:背景色:字体:[][][]


dll 中如何触发onreceive事件?急!
发表于:2007-10-18 15:49:40 楼主
现在要把原来的基于多对话框的mfc工程,做成dll。这个dll主要作用是和服务器之间发送请求和接受请求。
现在的问题是发送和服务器端的接受都没有问题,服务器端的回应信息,客户端收不到,总是触发不了onreceive()。
后来调试查其原因,可能是因为把原来的消息触发的模式,写在dll里得把这个系统流程中调用的函数顺序的写到一个
dll中要导出的一个接口函数中,这样系统就按顺序一个一个函数的执行,即使中间收到了服务器发过来的信息,也没有机会调用
onreceive()。如果在中间流程中让他执行一个afxmessagebox(),系统就会在弹出消息框之前的一瞬自动触发onreceive。
但是我们的dll是要被java调用的,不能弹出消息框,不知道有什么解决办法。
小弟刚接触vc,对这些内部机制不是很清楚,望高手帮忙,谢谢!!!
发表于:2007-10-18 16:00:001楼 得分:0
lz没有必要打出流程吧,只需要导出关心的数据就可以了。
让dll内部处理这个流程,上层只获取想要的数据,就没有问题了。
发表于:2007-10-18 16:36:162楼 得分:0
楼上的“让dll内部处理这个流程,上层只获取想要的数据”
小弟还是不太清楚,请指教。
因为原来的工程是基于多对话框,还有view什么的,现在要把他做成dll供java调用,这个dll就不能有任何的显示,所以也不能有什么人工触发的机会,所以就得把这个流程中调用到的函数顺序写下来,这中间要和服务器交换信息,可是服务器发过来的信息应该是收到了,可是这dll没有办法触发onreceive,就没法最终得到结果。在测试的过程中发现,如果在发送请求后加个afxmessagebox,系统就会在弹出消息框前触发onreceive。由此感觉好像是消息收到了,但是没机会去触发onreceive,可是在弹出消息框之前,系统暂停了一下,就有机会调用了,这里面的机制不懂,所以说得有些可笑,不知道说明白没。
发表于:2007-10-18 16:54:353楼 得分:0
onreceive是消息回调函数,一般是casyncsocket或派生类封装好的,不用你去触发的.
发表于:2007-10-18 17:20:084楼 得分:0
在dll内部接收onreceive。
应用程序向dll传一个回调函数,dll收到信息后,用回调函数把信息传给应用程序
发表于:2007-10-18 17:24:035楼 得分:0
onreceive是系统中内部触发的,不需要lz关心。
lz关心的应该是数据如何处理,上层如何调用处理完的数据,而不是由java来处理。
发表于:2007-10-19 10:59:396楼 得分:0
主要是系统内部触发不了onreceive,不知道为什么
发表于:2007-10-19 11:24:117楼 得分:0
在dll中你也可以用api函数来实现,可以建一个线程,在里面监听数据包,然后进行处理.
发表于:2007-10-23 18:12:238楼 得分:0
我在发出消息后,调用了csocket类的processauxqueue()函数,问题迎刃而解了。这个函数本来应该是socket机制中csocket::onsocketnotify()调用的,而它自己没起作用,我就手动调用了。这个函数就是循环判断socket缓冲区中是否有信息,如果有就调用cansyncsocket::docallback(),这里又调用onreceive().
发表于:2007-10-23 19:42:369楼 得分:0
答案总是在自己经过一番思考、尝试后才能真正找到。


快速检索

最新资讯
热门点击