在OnTimer里接收网络发来的数据,用了如下代码void CClientTest1Dlg::OnTimer(UINT nIDEvent)
{
// TODO: Add your message handler code here and/or call default
if (nIDEvent == 1)
{
nLenSend = recvfrom(socket1,buf,1024,0,(SOCKADDR*)&sockaddr_in1,&nClientLen);
}
if (nLenSend != SOCKET_ERROR)
{
//下面这样可以插入成功
//m_list.InsertItem(0, 0);//插入行
//m_list.SetItemText(0, 1, buf); //下面这样插入,插入的都是空行,虽然看不到内容,但是鼠标单击时可以选中
m_list.SetItemText(m_list.GetItemCount(), 0);//设置数据
//m_list.InsertItem(m_list.GetItemCount(), , 0);//插入行
//m_list.SetItemText(m_list.GetItemCount(), , 1, buf);
}
else
{
MessageBox("0","0",MB_OK);
} CDialog::OnTimer(nIDEvent);
}注意上面的这几行:
//下面这样插入,插入的都是空行,虽然看不到内容,但是鼠标单击时可以选中
m_list.SetItemText(m_list.GetItemCount(), 0);//设置数据
//m_list.InsertItem(m_list.GetItemCount(), , 0);//插入行
//m_list.SetItemText(m_list.GetItemCount(), , 1, buf); 为什么m_list.GetItemCount()不提示出错,但是就是不能正确插入列表呢。我的目的是把从网络收到的buf插入到列表控件最后面。
{
// TODO: Add your message handler code here and/or call default
if (nIDEvent == 1)
{
nLenSend = recvfrom(socket1,buf,1024,0,(SOCKADDR*)&sockaddr_in1,&nClientLen);
}
if (nLenSend != SOCKET_ERROR)
{
//下面这样可以插入成功
//m_list.InsertItem(0, 0);//插入行
//m_list.SetItemText(0, 1, buf); //下面这样插入,插入的都是空行,虽然看不到内容,但是鼠标单击时可以选中
m_list.SetItemText(m_list.GetItemCount(), 0);//设置数据
//m_list.InsertItem(m_list.GetItemCount(), , 0);//插入行
//m_list.SetItemText(m_list.GetItemCount(), , 1, buf);
}
else
{
MessageBox("0","0",MB_OK);
} CDialog::OnTimer(nIDEvent);
}注意上面的这几行:
//下面这样插入,插入的都是空行,虽然看不到内容,但是鼠标单击时可以选中
m_list.SetItemText(m_list.GetItemCount(), 0);//设置数据
//m_list.InsertItem(m_list.GetItemCount(), , 0);//插入行
//m_list.SetItemText(m_list.GetItemCount(), , 1, buf); 为什么m_list.GetItemCount()不提示出错,但是就是不能正确插入列表呢。我的目的是把从网络收到的buf插入到列表控件最后面。
//m_list.InsertItem(m_list.GetItemCount()- 1, , 0);//插入行
//m_list.SetItemText(m_list.GetItemCount()- 1, , 1, buf);
m_list.SetItemText(m_list.GetItemCount(), 0);
都有两个参数呀你怎么过的。
int nIndex = m_list.GetItemCount();
m_list.InsertItem(nIndex, "默认第一列");
m_list.SetItemText(nIndex, 1, "二列");
.
.
.
m_list.SetItemText(m_list.GetItemCount(), 0);//设置数据
//m_list.InsertItem(m_list.GetItemCount(), , 0);//插入行
//m_list.SetItemText(m_list.GetItemCount(), , 1, buf);
report 类型的必须先InsertItem,然后才能SetItemText
直接 SetItemText是不行的 插入不成功 应该就会出现你说的情况
//m_list.SetItemText(m_list.GetItemCount(), , 1, buf);
上面的m_list.GetItemCount()=0;,下面的m_list.GetItemCount()=1;
应该
int i=m_list.GetItemCount();
m_list.InsertItem(i, 0);//插入行
m_list.SetItemText(i, 1, buf);