把已经连接好的socket作为参数传给界面线程,如何能把WSAAsyncSelect()函数所接收到的消息放在界面线程里处理,比如Read, Write等消息。最好能有源代码,谢谢!分不够另开贴给分!

解决方案 »

  1.   

    呵呵,给我发邮件吧,[email protected],帮你写一个
      

  2.   

    ::SendMessage(pDlg->m_hWnd, UM_RECEIVE, ...)
      

  3.   

    qrlvls, 你的意思是往这个在UI Thread 里Create的窗口里发送收到的消息吗?
      

  4.   

    目的是对于每一个socket的发送接收放在界面线程里做。通过wsaasyncselect事件通知发送或者接收
      

  5.   

    刚刚做了一个跟你类似的东东,定义一个GUI/Network thread的消息接口,包括msgid 和
    各个消息的消息结构体如:
    #define WM_GUI_TO_NETWORK_LOGIN WM_USER+3000typedef struct tagGUIToNetworkLogin
    {
       char name[20];
       char pwd[20];
    }t_gui_to_network_login;然后,PostThreadMessage来进行双方之间的通讯了!
      

  6.   

    前提是要有一个网络thread derived from CWinThread supposed it named CNetworkThread
     you could add a CAsyncSocket *m_pClientSocket to the CNetworkThread,
    use the CNetworkThread as a proxy between the socket object and the gui thread.
      

  7.   

    WSAAyncSelect中有主框架的hWnd,然后直接PostMessage就可以了
      

  8.   

    创建一个新线程,将主窗体的HWND作为参数传入,在线程中使用WSAAsysncSelect()
    好好看看WSAAsyncSelect()函数的说明
      

  9.   

    同意SillYOU.
    WSAAsysncSelect()可以直接注册窗口信息,把想处理消息的窗口句柄作为这个函数的参数.
    注册后你就可以在窗口处理函数中直接处理你FD_READ,FD_WRITE的消息了.
      

  10.   

    可是我是想把这些FD_READ,FD_WRITE的消息放到界面线程里处理啊
      

  11.   

    这些FD_READ,FD_WRITE的消息最好放worker thread中,处理的信息再发送消息
      

  12.   

    blastzgd,你能给我一个类似的例子吗?真的急死了!
    我的MAIL:[email protected]
    真的谢谢!!!
      

  13.   

    晕,还是靠我自己找资料解决的!不过谢谢上面几位的帮忙,在CSDN里喜欢帮忙的人不是太多了
    本来1000分不想再送了,心寒啊。为了做人的原则,我会按照上面各位的回答给分。