WWW.ИСХОДНИКИ.РУ cpp.sources.ru
java.sources.ru web.sources.ru soft.sources.ru
jdbc.sources.ru asp.sources.ru api.sources.ru

  Форум на исходниках
  C / C++ / Visual C++
  Сортировка списка

СПРОСИТЬ  ОТВЕТИТЬ
профайл | регистрация | faq

Автор Тема:   Сортировка списка
spectator опубликован 14-12-2001 11:55 MSK   Click Here to See the Profile for spectator   Click Here to Email spectator  
Помогите пожалуйста, cписок не могу отсортировать.
Делаю примерно следующее:

void CMyListView::PopulateList()
{
СListCtrl& ctlList = (CListCtrl&) GetListCtrl();
...
//заполняю список
...
ctlList.SortItems(ListItemCompare,(LPARAM)&ctlList);
}

static int CALLBACK ListItemCompare(LPARAM lParam1, LPARAM lParam2, LPARAM lParamSort)
{
CListCtrl* pListCtrl = (CListCtrl*) lParamSort;
CString strItem1 = pListCtrl->GetItemText(lParam1, 0);
CString strItem2 = pListCtrl->GetItemText(lParam2, 0);
return strcmp(strItem1, strItem2);
}
Но список не сортируется. :(
Что я не так делаю?

purpe опубликован 14-12-2001 00:36 MSK     Click Here to See the Profile for purpe  Click Here to Email purpe     
попробуй использовать принцип из:
http://www.cpp.atfreeweb.com/CListCtrl/SortListCtrl.html
purpe опубликован 14-12-2001 00:43 MSK     Click Here to See the Profile for purpe  Click Here to Email purpe     
упс, ты ж по буквам сортируешь ?

чего-то я никак не могу въехать, каков выходной результат strcmp :)

purpe опубликован 14-12-2001 00:50 MSK     Click Here to See the Profile for purpe  Click Here to Email purpe     
так может тебе просто установить у списка свойство сортировки ? Даже в редакторе ресурсов есть "Sort: Ascending".

А то везде сказано, что сортировка в списках по алфавиту производится при помощи установки свойства, а по числам надо делать вручную ...

spectator опубликован 14-12-2001 13:30 MSK     Click Here to See the Profile for spectator  Click Here to Email spectator     
Я использую CListView, а не CListCtrl.
//class CMyListView: public CListView

Может я ошибаюсь, но в таком случае в ресурсах ничего поправить не удастся.
В MSDN есть пример сортировки СListCtrl,но
там при вызове ctlList.SortItems(ListItemCompare,(LPARAM)&ctlList) в качестве второго параметра передается указатель, а ссылка- может в этом дело? Но я всё-равно так сделать не могу =>(СListCtrl& ctlList = (CListCtrl&) GetListCtrl();)

Heromantor опубликован 14-12-2001 14:44 MSK     Click Here to See the Profile for Heromantor  Click Here to Email Heromantor     
Хехе как всех дядя Билли на%$%$ ;))))))))))))

В ф-цию сортировки в lParam1 и lParam2 передаеться не индексы сравниваемых эл-тов а то что ты занес(или не занес) в ItemData(SetItemData()), так вот шоб это все работало надо перед вызовом сортировки сделать что-то типа того:

for(int i=0;i<LIST->GetItemCount();i++)LIST->SetItemData(i,i)

а потом уже SortItems() вызывать. Так что если че-нить хранишь в этой переменной то придеться извращаться ;))).

spectator опубликован 15-12-2001 06:32 MSK     Click Here to See the Profile for spectator  Click Here to Email spectator     
Спасибо большое, заработало %D.
Хотя повезло, что ItemData для других целей мне _пока_ не нужна ...

СПРОСИТЬ  ОТВЕТИТЬ
Перейти:


E-mail | WWW.ИСХОДНИКИ.RU

Powered by: Ultimate Bulletin Board, Freeware Version 5.10a
Purchase our Licensed Version- which adds many more features!
© Infopop Corporation (formerly Madrona Park, Inc.), 1998 - 2000.