Winsock的事件处理有关问题

Winsock的事件处理问题
我的客户端程序有一个对话框,对话框上有一个Winsock控件winsock1,在服务器上有一个Winsock控件,已处于监听状态。
现在我要完成下面的工作:
1、在对话框的InitDialog消息处理函数中调用winsock的connect()方法,
因为connect方法是异步执行的,所以我要等待connect成功才继续后面的操作,问题一:如何等待connect连接服务器成功?我曾经在connect()方法后用一个循环来检测winsock1.GetStatus是否为已连接,但是结果是死循环,也就是说其状态始终没有变为已连接状态。
2、connect()方法连接成功后,在InitDialog消息处理函数中,我用SendData()方法向服务器中发送数据,发送完后我要等待服务器端返回的数据,并在InitDialog消息处理函数中继续处理。现在问题时,接收到数据是在DataArrival事件中,但是处理接收到的数据的过程必须放在InitDialog消息处理函数中(要是把处理过程放在DataArrival事件中当然容易很多,但是程序不允许这样),请问怎么处理?
谢谢!

------解决方案--------------------
方法
1:能否不用Winsock控件?自己写通信程序
2:修改程序结构,不要在InitDialog消息处理服务器端返回的数据
3:设置一个类变量,在InitDialog等待 ,在DataArrival事件中接收后付值给类变量,此时InitDialog继续执行
------解决方案--------------------
在等待的时候通过PeekMessage、TranslateMessage、DispatchMessage处理Winsock控件的消息,这样就能收到数据了