当我在一个线程类中要使用该WINSOCKET API:
WSAAsyncSelect(m_hSocket,m_hWnd,WM_SOCKET_MESSAGE,FD_READ|FD_WRITE|FD_CONNECT|FD_CLOSE);
可是我不知道如何得到第2个参数的值。
我尝试用用CWinThread的成员函数m_pMainWnd来替代,但发生错误。
提示WINSOCKET 1022错。请问有什么办法获取该参数的值?

解决方案 »

  1.   

    工作线程,是派生于CWinThread的线程类
      

  2.   

    HWND是一个窗口句柄,只有CWnd和从CWnd继承的类才是窗口类,才有HWND。一个普通的线程是没有所谓的HWND的。这个函数WSAAsyncSelect(m_hSocket,m_hWnd,WM_SOCKET_MESSAGE,FD_READ|FD_WRITE|FD_CONNECT|FD_CLOSE);
    所要你添的窗口句柄是让你将FD_READ|FD_WRITE|FD_CONNECT|FD_CLOSE这几个消息和一个窗口相关连,当触发这几个消息时,将它们发送到关连的窗口。所以,你应该将你的主窗口句柄作为参数传给线程。
      

  3.   

    一定要窗口句柄啊??
    我从CWinThread派生出来的类都无法得到该消息吗?
    我用m_pMainWnd->GetSafeHwnd();中得到的值串进去也不行吗?