在多线程中,用到分割的视图时,会报错
只要不是用在多线程中,就不会报错
static DWORD WINAPI RecvZJThread(LPVOID lpParam)
{
SOCKET sock = *((SOCKET *)lpParam);
int rc = 0;
char szBuf[4096] = {0};
int iRep = 0;
TRACE("================进入RecvZJThread==================\n");
while(1)
{
memset(szBuf, 0x00, sizeof(szBuf));
rc=recv(sock,szBuf,sizeof(szBuf) - 1,0);
szBuf[4094]='\0';
CString strMsg("");
for(int i=0 ;i<rc;i++)
{
if (szBuf[i]!='\0')
{
strMsg +=szBuf[i];
}
}
TRACE(strMsg);
// AfxMessageBox(*pcTmp);
// TRACE(szBuf);
//memcpy(szMsg.GetBuffer(0),szBuf,rc);
if(rc <= 0)
{
//CloseHandle(g_hRecvZJ);
//closesocket(sock);
//return 0;
}
else
{
CString szRes = ((CFrontCollectApp*)AfxGetApp())->g_pZJSendClient->DealWebDataFun(szBuf,rc);
CString strBuf;
strBuf.Format("%s",szBuf);
iRep = atoi(szRes);
if (szBuf[8] == 0x62)
{
if(atoi(szRes) == 0)
{
((CFrontCollectApp*)AfxGetApp())->m_iLoginFlag = 1;
TRACE("\n================收到中继登陆响应消息,成功==================\n");
CMainFrame *pWnd = (CMainFrame*)::AfxGetApp()->GetMainWnd();
// pWnd->DisplayMsg("dfdfddfdf");
}
else
{
((CFrontCollectApp*)AfxGetApp())->m_iLoginFlag = 0;
TRACE("\n================收到中继登陆响应消息,失败==================\n");
}
}
else
{
TRACE("\n ================收到中继采集响应消息 iRep=d==================\n", iRep);
CMainFrame *pWnd = (CMainFrame*)::AfxGetApp()->GetMainWnd();
CFrontCollectView* pView = pWnd->GetDataView();
pView->m_pMsg22->ParseMsg(szBuf, rc);
pView->m_pMsg22->ParseMsgXML();
CString szChNo = pView->m_pMsg22->CHNL_NO;
pView->ReceiveResponse(szChNo,iRep, "");
}
}
}
return 0;
}
这里的分割用的是静态分割,具体是什么原因,请各位高手指教!谢谢!