CSocket:OnReceive()函数不可以在无模式窗口下使用?该怎么处理

CSocket::OnReceive()函数不可以在无模式窗口下使用?
//发送信息到服务端
CString strMsg;
strMsg.Format(_T("%s,%s,%s"), strLocalIP, dlgLogin.m_UserName, dlgLogin.m_PassWord);
m_strUser = dlgLogin.m_UserName;//记录用户
int len = strMsg.GetLength();
int nRest = m_revUserSocket.SendTo(strMsg.GetBuffer(len*2), len*2, 7997, strServerIP);
strMsg.ReleaseBuffer();

//MessageBox(NULL, _T(".....!"), _T("提示"), MB_OK);

if (1 == m_bLogin)
{
    //创建主窗口
   CCNCSystemMainDlg dlg;
   m_pMainWnd = &dlg;
   dlg.DoModal();
}
怎么注释掉Messagebox后,不能触发客户端的OnReceive函数呢,导致m_bLogin的值没变
------解决思路----------------------
OnReceive在什么地方响应的?
------解决思路----------------------
那你设个断点在messagebox那里,然后到那了一步一步的走走,看看能进去不,消息框应该是不会影响你那个消息函数的
------解决思路----------------------
messagebox出来后让你的客户端有时间去响应 OnReceive, 但是你注视掉之后
你的后续代码执行太快, 导致你的数据还没收到判断就已经过去了

目前猜到的可能就只有这个, 等其它可能......
------解决思路----------------------
引用:
Quote: 引用:

messagebox出来后让你的客户端有时间去响应 OnReceive, 但是你注视掉之后
你的后续代码执行太快, 导致你的数据还没收到判断就已经过去了

目前猜到的可能就只有这个, 等其它可能......


可是注释掉,sleep了几秒后,调试仍然没有进入到OnReceive函数里CSocket:OnReceive()函数不可以在无模式窗口下使用?该怎么处理


sleep 没有进入消息泵, 而是整条线程暂停了, 没有消息循环
onreceive 需要消息回调才能用~~因为这个类是绑定窗口的
------解决思路----------------------
或者你可以用信号量
把 sleep 或 messagebox 换成 WaitForSingleObject
在 OnReceive 处理完毕后给出信号, 这样的逻辑比较好