Здравствуйте Aslamov, Вы писали:
A>Кто-нибудь знает, как в классе CListCtrl реализовать сортировку?
Кто-нибудь точно знает
A>Есть несколько колонок, по нажатию на header которой нужно сортировать по возрастанию или по убыванию.
Вот что написано в MSDN
CListCtrl::SortItems
BOOL SortItems( PFNLVCOMPARE pfnCompare, DWORD dwData );
...
Example
// Sort the item in reverse alphabetical order.
static int CALLBACK
MyCompareProc(LPARAM lParam1, LPARAM lParam2, LPARAM lParamSort)
{
// lParamSort contains a pointer to the list view control.
// The lParam of an item is just its index.
CListCtrl* pListCtrl = (CListCtrl*) lParamSort;
CString strItem1 = pListCtrl->GetItemText(lParam1, 0);
CString strItem2 = pListCtrl->GetItemText(lParam2, 0);
return strcmp(strItem2, strItem1);
}
void snip_CListCtrl_SortItems()
{
// The pointer to my list view control.
extern CListCtrl* pmyListCtrl;
// Sort the list view items using my callback procedure.
pmyListCtrl->SortItems(MyCompareProc, (LPARAM) pmyListCtrl);
}
Судя по этому примеру при вставке элементов в ListCtrl делается что-то вроде
int nItem = listCtrl.InsertItem(i, _T("some text"));
listCtrl.SetItemData(nItem, nItem);
но ты можешь сделать и иначе
A>И как вообще отловить нажатие на header колонки?
Ловить нотификацию LVN_COLUMNCLICK