类间通信

zwicker 2009-09-15 11:25:18
class A
{
public:
void OnClientChat(BYTE *pmsg);//客户聊天
void OnClientLogin(BYTE *pmsg);//客户登陆
void OnRegOk(BYTE *pmsg);//客服注册成功
void OnRegFail(BYTE *pmsg);//客服注册失败
void OnLoginOk(BYTE *pmsg);//客服登陆成功
void OnLoginFail(BYTE *pmsg);//客服登陆失败
void OnAlreadyLogin(BYTE *pmsg);//客服已经登录

void OnConnect();//客服连接到服务器
void OnDisconnect();//客服断开到服务器的连接
}

当A中的某些消息触发时,我想要在class B中处理相应的动作,比如当A中的OnClientChat触发时,我要在B中处理这个消息,有什么办法,除了SendMessage,PostMessage之外?
...全文
119 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
xingzhe2001 2009-09-15
  • 打赏
  • 举报
回复
在A类中添加B类对象的指针:

B* m_pB; 在某处给其赋值。

在OnClientChat(BYTE *pmsg)里调用: m_pB->ProcessClientChatMsg(pmsg);
liuwg9999 2009-09-15
  • 打赏
  • 举报
回复
A里面声明一个B不行吗?有一个观察着模式,可以吧b当做a的一个观察者
zwicker 2009-09-15
  • 打赏
  • 举报
回复
如果用postmessage,那如何把收到的数据,传给其他类(窗口)呢,比如收到了聊天信息,怎样从A中把这些数据传给其他窗口
aizibion 2009-09-15
  • 打赏
  • 举报
回复
预定义全局数组,数组每个元素代表一种事件,值为0或1,0代表该事件没发生,1代表发生了,轮询该数组,对发生了的事件进行处理并归位。。。注意资源锁的使用。
sunnywyg 2009-09-15
  • 打赏
  • 举报
回复
不嫌麻烦的话,可以搞个中间类来进行消息传递
xiaocai0001 2009-09-15
  • 打赏
  • 举报
回复
消息通信应该是比较好的选择, 你也可以选择使用callback方式.
bobo_2003 2009-09-15
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 xingzhe2001 的回复:]
在A类中添加B类对象的指针:

B* m_pB; 在某处给其赋值。

在OnClientChat(BYTE *pmsg)里调用: m_pB->ProcessClientChatMsg(pmsg);
[/Quote]

lsldd 2009-09-15
  • 打赏
  • 举报
回复
如果两个类不想有依赖关系,发送自定义消息没什么不好。

64,651

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

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