关于循环的消息
if(m_hEventWnd)
{
:: PostMessage(m_hEventWnd,WM_GRPDOWNBEGIN,NET_SHORT(pGroupAck->groupCount),NET_SHOR(pGroupAck->deviceCount));
}
以上这段代码如果被调用,然后循环调用
if(m_hEventWnd)
{
::PostMessage(m_hEventWnd,WM_CARDOWNDETAIL,(WPARAM)pci,0);
}
什么意思呢?比如说下载车辆信息吧,下载一次socket就给主窗体发消息,说明车队总数pGroupAck->groupCount和车辆总数pGroupAck->deviceCount,然后socket又接着收到每一个车辆的信息,循环发给m_hEventWnd,而在m_hEventWnd我想通过一个方法处理这两个消息,可以利用PeekMessage这个API函数,每次网消息队列里面取到并删除车辆信息
代码如下:
time_t startTime = time(NULL);
while(1)
{
BOOL ret = FALSE;
while(ret = PeekMessage(&msg, NULL, 0, 0,PM_REMOVE))
{
if(msg.message == msgType || msg.message == WM_NOMOREDATA)
{
return 0;
}
else
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}
if(!m_sockClient.IsConnect())
{
return 1;
}
if(time(NULL) - startTime > timeout)
{
return 2;
}
}
if(!ret)
{
Sleep(1);
}
}
return 2;