WSAAsyncSelect第二个参数是A handle that identifies the window that will receive a message when a network event occurs.
但是,我是准备封装一个ftp类,不方便指定任何窗口句柄啊
请各位大侠帮忙出出注意

解决方案 »

  1.   

    要不就WSAEventSelect,要不就线程加select模型,
      

  2.   

    int PASCAL FAR WSAAsyncSelect( SOCKET s, HWND hWnd,unsigned int wMsg, long lEvent );
    参数: s:Socket 对象;
    hWnd :接收消息的窗口句柄;
    wMsg:传给窗口的消息;
    lEvent:被注册的网络事件,也即是应用程序向窗口发送消息的网路事件,该值为下列值FD_READ、FD_WRITE、FD_OOB、FD_ACCEPT、FD_CONNECT、FD_CLOSE的组合,各个值的具体含意为FD_READ:希望在套接字S收到数据时收到消息;FD_WRITE:希望在套接字S上可以发送数据时收到消息;FD_ACCEPT:希望在套接字S上收到连接请求时收到消息;FD_CONNECT:希望在套接字S上连接成功时收到消息;FD_CLOSE:希望在套接字S上连接关闭时收到消息;FD_OOB:希望在套接字S上收到带外数据时收到消息。 
      具体应用时,wMsg应是在应用程序中定义的消息名称,而消息结构中的lParam则为以上各种网络事件名称。所以,可以在窗口处理自定义消息函数中使用以下结构来响应Socket的不同事件:  switch(lParam) 
      {case FD_READ:
        …  
      break;
    case FD_WRITE、
        …
      break;
        …
    } 不需要句柄就填 NULL