我的程序由于需要往列表控件 插入的数据量比较大,所以用到了虚拟列表.
但是用虚拟列表的问题来了:
我想把数据分几次插入到列表中,但是一调用 m_list.SetItemCount() 时就把以前的数据也覆盖了.
现在我想的事情是 每次调用 m_list.SetItemCount() ,插入数据时,直接在列表最底部插入,而不覆盖以前的数据.
void CTextSearchDlg::OnGetdispinfoList(NMHDR* pNMHDR, LRESULT* pResult)
{
LV_DISPINFO* pDispInfo = (LV_DISPINFO*)pNMHDR;
// TODO: Add your control notification handler code here
LV_ITEM* pItem= &(pDispInfo)->item;
int itemid = pItem->iItem;
if (pItem->mask & LVIF_TEXT)
{
CString text;
if (pItem->iSubItem == 0)
{
text=m_Path;
}
else if (pItem->iSubItem == 1)
{
text=(result[itemid]).c_str();
}
lstrcpyn(pItem->pszText,text,pItem->cchTextMax);
}
*pResult = 0;
}
这是我的OnGetdispinfoList 消息响应函数. 请各位同仁帮忙想想办法.
但是用虚拟列表的问题来了:
我想把数据分几次插入到列表中,但是一调用 m_list.SetItemCount() 时就把以前的数据也覆盖了.
现在我想的事情是 每次调用 m_list.SetItemCount() ,插入数据时,直接在列表最底部插入,而不覆盖以前的数据.
void CTextSearchDlg::OnGetdispinfoList(NMHDR* pNMHDR, LRESULT* pResult)
{
LV_DISPINFO* pDispInfo = (LV_DISPINFO*)pNMHDR;
// TODO: Add your control notification handler code here
LV_ITEM* pItem= &(pDispInfo)->item;
int itemid = pItem->iItem;
if (pItem->mask & LVIF_TEXT)
{
CString text;
if (pItem->iSubItem == 0)
{
text=m_Path;
}
else if (pItem->iSubItem == 1)
{
text=(result[itemid]).c_str();
}
lstrcpyn(pItem->pszText,text,pItem->cchTextMax);
}
*pResult = 0;
}
这是我的OnGetdispinfoList 消息响应函数. 请各位同仁帮忙想想办法.
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货