关于把CSocket类做成dll后的问题,请高手指点

来源:百度知道 编辑:UC知道 时间:2024/06/04 17:19:17
我把发送和接收网络信息的程序制成了dll形式,在该dll用OnReceive()函数接收信息,用AfxMessageBox()来显示收到的信息,成功。
但现在我想在收到信息后,把这个信息发送给调用该dll的主程序文件,在程序文件中处理收到的信息。
这还不同于一般的dll调用,我会把主程序的参数传递到dll中并修改,但这只是函数的返回值问题,用return就可。我现在等于是要在dll的OnReceive()函数中要经常把信息返回,由主程序根据信息做出不同的反应,注意这跟函数返回参数是不一样的。应该怎么做?
to 矢口首之:帅哥,不就是这个问题吗,你不也说要通知主程序信息什么时候更新,问题就在这了。怎么通知,能通知也就不必干别的了。

方法很多,可以将应用程序的某个窗口句柄送入DLL,然后在DLL中SendMessage给该窗口实现通知;也可以使用回调函数,应用程序将回调函数传递给DLL,DLL在需要通知应用程序时调用该回调函数;另外所有的LPC/RPC方法都可以用,不过属于机枪打蚊子。

我觉得可以在DLL中添加一个函数,用于设置信息的存放地址。在程序启动时,主程序调用DLL的设置函数,设置这个地址。
以后接收信息时,OnReceive可以把接收到的信息存放在这个地址所在的内存空间。而主程序知道信息存放在地方,就可以在那里取出信息。当然DLL要通知主程序信息什么时候被更新。