默认CListCtrl数据即将排序

时间:2013-11-13 06:45:19

标签: c++ mfc clistctrl

我正逐行从文件中读取数据,并将每行的标记放在向量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);
}

1 个答案:

答案 0 :(得分:1)

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

如果您希望获得与数组中相同的顺序,则需要使用

添加项目
 lvi.iItem = m_listCtrl.GetItemCount();
 // or use INT_MAX (see docu)
 lvi.iItem = INT_MAX;