是这样的,我写了一个关于TCP消息接受和发送的类,专门用于收发各种TCP消息包。
我把接收到的包和发送的包缓冲在一个链表里面。
现在的问题是,当我发现有包收到的时候,如何通知其他的类包已经收到这个消息。(我不想用SetEvents,因为这是一个API,单纯的标准C++能够实现这样的功能吗?)
我尝试使用函数指针解决,但是函数指针要求的必须是静态指针,比如我想把消息到达的事件绑定给一个任意的类,这个类接受到消息以后,会自动的去链表中读取数据。函数指针直接绑定到这里类上似乎是不行的。
虚心请教高手给个思路,谢谢。
我把接收到的包和发送的包缓冲在一个链表里面。
现在的问题是,当我发现有包收到的时候,如何通知其他的类包已经收到这个消息。(我不想用SetEvents,因为这是一个API,单纯的标准C++能够实现这样的功能吗?)
我尝试使用函数指针解决,但是函数指针要求的必须是静态指针,比如我想把消息到达的事件绑定给一个任意的类,这个类接受到消息以后,会自动的去链表中读取数据。函数指针直接绑定到这里类上似乎是不行的。
虚心请教高手给个思路,谢谢。
解决方案 »
- EnumChildWindows可以获取其他程序的控件句柄 当我有个困惑:
- CString的一个问题
- 汉字内码转换的问题
- 给俺提供个可以提取节假日的日历控件吧 ! 急用 能行 马上给分 不够我再加
- COM接口问题,求救!!我有一个用VC写的模块,想封装成ActiveX控件,但接口参数需要有一个自己定义的较复杂的类参数,请问该如何封装?谢
- 闲着没事,把我以前的贴子翻了翻
- 如何用CSoket???????这是什么错误????
- ???????数据库的连接===================急急急急急急急
- CWebBrowser2问题
- 请问谁有COM的例子代码,dll和客户端都要,谢谢了(最好是简单,明了的那种)
- CButtonST
- 遇到个问题也不知道该如何概况,有兴趣的请进来指点一下
class A
{
public:
int ID = 0;
virtual GetPack() = 0;
};
然后再用类继承A,在另外的类中实现GetPack(),然后将其他的类实例化,并且将指针封装在一个链表中,想给哪一个类发消息,就查找ID,再得到指针,然后强制转换类型,调用GetPack(),这样就OK,
STA就是这样做的呀!
1)首先某个窗口向“TCP消息接受和发送的类”注册,告诉它,自己关心这个类型的数据。
2)“TCP消息接受和发送的类”管理这个注册队列。
3)接收到数据时,查找关心这类消息的句柄,然后使用SendMessage或者PostMessage发送该消息给这个类。
至于如何通用,可以使用虚拟基类的方式来定义这个类。
4)当对话框关闭时,告诉“TCP消息接受和发送的类”自己不再关系这类数据了,然后由“TCP消息接受和发送的类”管理这个注册队列删除这个对话框的句柄或者其他句柄。
这样就可以减少发送消息的数量。