关于CListCtrl在末尾插入新行
在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插入到列表控件最后面。