CListCtrl
rs.Open(dbOpenDynaset, "SELECT [Students List].FIO, [Group Names List].Group, [Post Names List].Exam, [Job Names List].Exam FROM [Students List], [Group Names List], [Post Names List], [Job Names List] WHERE [Students List].CodeGroup = [Group Names List].CodeGroup AND [Post Names List].CodeExam = [Students List].CodePost AND [Job Names List].CodeExam=[Students List].CodeJob");
while (!rs.IsEOF())
{
val = rs.GetFieldValue(0);
str = CCrack::strVARIANT(val);
valu = rs.GetFieldValue(1);
stor = CCrack::strVARIANT(valu);
dol = rs.GetFieldValue(2);
sol = CCrack::strVARIANT(dol);
kol = rs.GetFieldValue(3);
lol = CCrack::strVARIANT(kol);
int nItem = m_ListItems.Add(MyListItem(str, stor, sol, lol));
int nIndex = list1.InsertItem(list.GetItemCount(), "");
list1.SetItemText(nIndex, 0, str);
list1.SetItemText(nIndex, 1, stor);
list1.SetItemText(nIndex, 2, sol);
list1.SetItemText(nIndex, 3, lol);
list1.SetItemData(nIndex, i);
list1.SetItemData(nIndex, (LPARAM)& m_ListItems[nItem]);
i++;
rs.MoveNext();
}
А callback пишу так:
int CALLBACK CDllprobaApp::MyCompareFunc(LPARAM lParam1, LPARAM lParam2, LPARAM lParamSort)
{
int nCol = (int) lParamSort;
MyListItem* item1 = (MyListItem*)lParam1;
MyListItem* item2 = (MyListItem*)lParam2;
switch(nCol)
{
case 0:
return strcmp(item1->getName(), item2->getName());
break;
case 1:
return strcmp(item1->getGroup(), item2->getGroup());
break;
case 2:
return strcmp(item1->getDolzhn(), item2->getDolzhn());
break;
case 3:
return strcmp(item1->getMesto(), item2->getMesto());
break;
default:
return strcmp(item1->getName(), item2->getName());
break;
}
}
Ошибок нет, но при нажатии на любую колонку он материться и прога вылетает. Что я не так делаю. Может что-то с массивом в который я заношу данные для сортировки.