有一个自定义类未继承任何类,使用到了CSocket进行网络通信,
我该如何在自定义类中捕获CSocket的OnReceive消息呢?
或者说CSocket有了OnReceive消息如何通知我的自定义类呢?

解决方案 »

  1.   

    你可以用Windows的消息 .
    你在 你的那个CSocket类中 保存一个调用者的对像指针, 这样就可以用这个指针来进行发消息了.不知道是不是还有别的办法, 我一直都是用这个办法的.用起来还比较方便.
      

  2.   

    谢谢,我知道可以在CSocket中给一个窗体发送消息,但是我不想让其他窗体处理这些消息,
    只是想把这些消息处理都封装在我的自定义类中。
      

  3.   

    postmessage().记得将接受的数据用指针保留了.等对接受的数据处理完了提供一个方法释放掉.
    第一个参数为NULL即可.不能用sendmessage,他只能想窗口发送消息.
      

  4.   

    看了Postmessage 的说明:
    NULL
    The function behaves like a call to PostThreadMessage with the dwThreadId parameter set to the identifier of the current thread.
    我的理解是,如果使用NULL参数,消息将会发送到当前线程。
    可是我自定义的类能收到这个消息吗,如果收到的话,如何响应呢?好像只有CCmdTarget派生类才有接收消息的能力。经过查阅,发现CSocket本身好像也是借助一个隐藏的窗口来实现消息接收和调用的。
    真不好办呀,要把CSocket消息处理封装到一个非窗口类中……
      

  5.   

    粗略看了MFC的CAsyncSocket实现源码,的确是借助一个CSocketWnd实现消息传递的。
    干脆照着葫芦画了个大水瓢,凑合实现了功能,呵呵。
    感觉自己真是很弱啊,明天结贴。