CListCtrl类的问题,急等!
DWORD WINAPI CBaseDrawView::RecvThread(LPVOID lpParameter)
{
int i = (int)lpParameter;
CBaseDrawView *m_pBaseDrawView = (ip[i])->m_pBaseDrawView;
SOCKET socketRecv = (ip[i])->sock;
CDC *pDC = m_pBaseDrawView->GetDC();
CMainFrame* pMainFrame=(CMainFrame*)AfxGetMainWnd();
CDataListView *pDataView=(CDataListView *)(pMainFrame->m_wndSplitter.GetView(pMainFrame->m_iDataView));
CListCtrl &listCtrl=pDataView->GetListCtrl();
CRect drawrect;
m_pBaseDrawView->GetClientRect(drawrect);
CString tmpcs;
tmpcs.Format("%d",i+1);
// LVFINDINFO FindInfo;
// FindInfo.flags = LVFI_STRING;
// FindInfo.psz = tmpcs;
// m_pBaseDrawView->index = listCtrl.FindItem(&FindInfo);
int k = listCtrl.GetItemCount();//
int index = listCtrl.InsertItem(k, tmpcs);//这两条是在表后添加记录
while(1)
{
CDC *pDC = m_pBaseDrawView->GetDC();
CMainFrame* pMainFrame=(CMainFrame*)AfxGetMainWnd();
CDataListView *pDataView=(CDataListView *)(pMainFrame->m_wndSplitter.GetView(pMainFrame->m_iDataView));
// CListCtrl &listCtrl=pDataView->GetListCtrl();
CRect drawrect;
m_pBaseDrawView->GetClientRect(drawrect);
BYTE recvBuf[80]={0};
if(SOCKET_ERROR != recv(socketRecv, (char*)recvBuf, 80, 0))
{
if(recvBuf[3] == 'E')
{
AfxMessageBox("不能执行请求!");
}
else if((recvBuf[4] == 0x34) | (recvBuf[4] == 0x35))
{ ////////以下代码可以不看
if(index<0)
{
CString cs;
cs.Format("%d",i+1);
index = listCtrl.InsertItem(0,cs);
}
if(recvBuf[5] != 0x01)
{
tmpcs.Format("%d",i+1);
tmpcs.Format("%d",m_pBaseDrawView->m_strImgGroup[i].Data.Num03);
listCtrl.SetItemText(index,1, tmpcs);
tmpcs.Format("%d",m_pBaseDrawView->m_strImgGroup[i].Data.Num05);
listCtrl.SetItemText(index,2,tmpcs);
tmpcs.Format("%d",m_pBaseDrawView->m_strImgGroup[i].Data.Num07);
listCtrl.SetItemText(index,3,tmpcs);
tmpcs.Format("%d",m_pBaseDrawView->m_strImgGroup[i].Data.Num10);
listCtrl.SetItemText(index,4,tmpcs);
tmpcs.Format("%d",m_pBaseDrawView->m_strImgGroup[i].Data.Num20);
listCtrl.SetItemText(index,5,tmpcs);
tmpcs.Format("%d",m_pBaseDrawView->m_strImgGroup[i].Data.Num50);
listCtrl.SetItemText(index,6,tmpcs);
tmpcs = m_pBaseDrawView->m_strImgGroup[i].Data.TimeStar.Format("%Y/%m/%d %H:%M:%S");
listCtrl.SetItemText(index,7,tmpcs);
tmpcs = m_pBaseDrawView->m_strImgGroup[i].Data.TimeUse.Format("%M:%S");
listCtrl.SetItemText(index,8,tmpcs);
//listCtrl.SetItemText(index,9, &addr);
listCtrl.SetItemText(index,10, times);
listCtrl.SetItemText(index,11, dispModle);
listCtrl.SetItemText(index, 12, (LPCTSTR)temperature);
listCtrl.SetItemText(index, 13, (LPCTSTR)humidity);
listCtrl.SendMessage(WM_PAINT,0,NULL);
}
CString data,time;
data.Format(" 0.3: %d\r\n 0.5: %d\r\n 0.7: %d\r\n 1.0: %d\r\n 2.0: %d\r\n 5.0: %d\r\n"
,m_pBaseDrawView->m_strImgGroup[i].Data.Num03,m_pBaseDrawView->m_strImgGroup[i].Data.Num05,m_pBaseDrawView->m_strImgGroup[i].Data.Num07,
m_pBaseDrawView->m_strImgGroup[i].Data.Num10,m_pBaseDrawView->m_strImgGroup[i].Data.Num20,m_pBaseDrawView->m_strImgGroup[i].Data.Num50);
time = m_pBaseDrawView->m_strImgGroup[i].Data.TimeUse.Format(" Time:%M:%S \r\n");
data += time;
m_pBaseDrawView->m_strImgGroup[i].oldTextRect = m_pBaseDrawView->DrawMessageBox(pDC,m_pBaseDrawView->m_pMemDC,data.GetBuffer(data.GetLength()),
m_pBaseDrawView->m_strImgGroup[i].pointText,m_pBaseDrawView->m_strImgGroup[i].oldTextRect,drawrect);
}//////////////////////////以上代码可以不看
if(recvBuf[4] == 0x35)
{
CString tmp;//
tmp.Format("%d",i+1);//不加这三条语句,运行时就不出错。
//但是完不成我想要的功能---满足条件就在表后加项。
index = listCtrl.InsertItem(listCtrl.GetItemCount(), tmp);//
if(recvBuf[5] == 0x00)
{
m_pBaseDrawView->m_strImgGroup[i].ButtonState = FALSE;
state[i] = 0;
m_pBaseDrawView->DrawButton(i, TRUE);
closesocket(socketRecv);
return 0;
}
}
}
m_pBaseDrawView->ReleaseDC(pDC);
}
return 0;
}
中间很多代码都不用看,只是我主要标出来的代码有问题,大家帮我看看。我只是想问,我错在哪里了。。。。