0

我正在逐行读取文件中的数据,并将每行的标记放入向量 tmpstrArr。然后在 CListCtrl 中为每一行添加标记,但 CListCtrl 以降序显示排序数据。我很困惑,因为调试元素正在进入正确的顺序与文件中可用的相同。我希望我的 CListCtrl 数据以文件中的原始形式而不是排序形式。我还检查了 CListCtrl 的属性窗口,其中选择了 sort=None。

LVITEM lvi;
CString strItem;

m_listctrl.InsertColumn(0, _T("col 1"), LVCFMT_LEFT, 100);
m_listctrl.InsertColumn(1, _T("col 2"), LVCFMT_LEFT, 100);

for(int i=0;i<tmpstrArr.size();i++)
{
    strItem=tmpstrArr.at(i).c_str();
    lvi.iItem = 0;
    lvi.iSubItem = i;
    lvi.pszText = (LPTSTR)(LPCTSTR)(strItem);
    //lvi.iImage = i%8;// There are 8 images in the image list
    if(i==0)
    {
        lvi.mask =  LVIF_IMAGE | LVIF_TEXT;
        m_listctrl.InsertItem(&lvi);
    }
    else
        m_listctrl.SetItem(&lvi);
}
4

1 回答 1

2

您正在添加项目位置为 0 的每个项目。因此,您刚刚插入的最后一个项目始终是列表中的第一个项目。请参阅文档

如果您想获得与数组中相同的顺序,则需要添加项目

 lvi.iItem = m_listCtrl.GetItemCount();
 // or use INT_MAX (see docu)
 lvi.iItem = INT_MAX;
于 2013-11-13T07:54:49.777 回答