我现在在开发一个软件,实现多客户端。用的是类来处理,有几个客户端就给他建立几个消息处理类。
在主程序中,用 WSAAsyncSelect(m_MainSocket,this->m_hWnd,wMSG,FD_ACCEPT);
在响应wMSG中 ClientSocket= WSAAccept(m_MainSocket, (sockaddr*)&ClientAddr, &AddrLen, NULL, (DWORD)NULL);
将ClientSocket存储在对应的客户端类里面
然后如果有连接并且这个客户端类已经存在
WSAAsyncSelect(m_HBSockProcess[i].m_ClientSocket, m_HBSockProcess[i].m_hWnd, WM_RWC_NETEVENT,FD_WRITE|FD_READ|FD_CLOSE);然后要在m_HBSockProcess[i](即对应的客户端类里面实现FD_WRITE|FD_READ|FD_CLOSE的消息响应)
我afx_msg LRESULT CHBSockProcess::OnRWC(WPARAM wParam, LPARAM lParam);
ON_MESSAGE(WM_RWC_NETEVENT,CHBSockProcess::OnRWC)
LRESULT CHBSockProcess::OnRWC(WPARAM wParam, LPARAM lParam){}
为什么没有反应啊?程序没有编译错误,可以执行到
WSAAsyncSelect(m_HBSockProcess[i].m_ClientSocket, m_HBSockProcess[i].m_hWnd, WM_RWC_NETEVENT,FD_WRITE|FD_READ|FD_CLOSE);下面就没反应了,好像一直在等待?求助啊?急

解决方案 »

  1.   

    在说明下,也就是说。如何在CWnd的继承类里去响应主程序中的WSAAsyncSelect中的消息映射函数
      

  2.   

    简单地说,就是。WSAAsyncSelect的消息响应,在另一个类里实现怎么写,我写的就平常的哪几步,消息响应过不去。
      

  3.   

    CHBSockProcess对象Create了吗?如果没有Create,窗体是不存在的,m_hWnd为0,则不能响应消息。
      

  4.   

    m_HBSockProcess=new CHBSockProcess[8];有了这句了,CHBSockProcess是一个继承于CWnd的类
      

  5.   

    而且你也没有create的过程
    create的时候把主窗体的句柄引进来
      

  6.   

    cnzdgs ————————————————————————————————————————————————————————————————————
    ————————————————————————————————————————————】
    爱死你了!!!!!!!!!!!!!!!!!!!!!!!!!!
    结贴!!!!!!!!!!!!!!!!!
    谢谢你?我的小错误,我就没想到!!!!!!!
    唉,没有经验的可悲啊!!!!!!!!!!!!!!!!!!