Re: Сортировка в CListCtrl
От: Willi  
Дата: 20.11.01 16:29
Оценка: 2 (1)
Здравствуйте 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
\/\/i||i
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.