在多线程中,用到分割的视图时,会报错
只要不是用在多线程中,就不会报错
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;
}
这里的分割用的是静态分割,具体是什么原因,请各位高手指教!谢谢!
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;
}
这里的分割用的是静态分割,具体是什么原因,请各位高手指教!谢谢!
...全文
相关推荐
MFC的窗口分割
- 为每个分割区域创建视图(CVIEW派生类)对象,并与CSplitterWnd对象关联。4. 分割窗口的调整和管理:分割窗口允许用户通过鼠标来调整子窗口的大小。
C#窗体多视图点云系统开发:PCL互操作与视图同步
点云可视化作为三维视觉与激光雷达数据处理的基础能力,在工业质检和上位机工具中需求旺盛。PCL库基于C++实现,无法被C#直接调用,需通过PclSharp封装或C++/CLI桥接实现互操作,这是构建C#窗体应用多视图点云系统的技术前提。此类系统能将点云加载、旋转缩放、多角度对比集成到WinForms界面,显著降低算法验证与交付成本。开发中常会遇到C#调用C++点云库时出现的AccessViolation(c0000005)崩溃、OpenGL多视口上下文冲突等问题,掌握其成因与规避方法尤为关键。C#窗体应用多视
使用CSplitterWnd切割窗口的方法和步骤
你需要指定视图的类型(通常是CView的派生类)、视图的矩形区域、以及视图的索引号。5. **调整大小**: 用户可以通过拖动分割线来改变各个视图的大小。
FineReport常见的数据集报错错误代码和解释
### FineReport常见数据集报错错误代码与解释在日常工作中使用FineReport进行报表开发时,难免会遇到各种各样的错误提示。理解这些错误代码及其含义对于快速定位问题、解决问题至关重要。
SAP标准成本核算问题大全.doc
structure could be determined for internal activity”通常是因为作业价格是否由系统自动计算还是手工维护和OKTZ成本组件结构中是否勾选“初级成本要素分割


进程/线程/DLL
