Данные 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);
}

0

Решение

Вы добавляете каждый элемент с позицией 0. Таким образом, последний элемент, который вы только что вставили, всегда является первым в списке.
Увидеть документы.

Если вы хотите получить тот же порядок, что и в массиве, вам нужно добавить элемент с

 lvi.iItem = m_listCtrl.GetItemCount();
// or use INT_MAX (see docu)
lvi.iItem = INT_MAX;
1

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector