![]() |
|
Модераторы: feodorv, GremlinProg, xvr, Fixin |
![]()
|
|
| neosapient |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 672 Регистрация: 16.8.2006 Репутация: 3 Всего: 4 |
Вопрос: как отсортировать поля в ListView.
В приложении мой пример, не могу понять что не работает? Помогите найти ошибку. Диагноз такой, когда человек щелкает по шапке столбца, то начинает вызываться моя функция сравнения ListSort(...) Последний параметр воспринимаю бес проблем. А вот в два других ничего не передается. Почему? немогу понять...
Присоединённый файл ( Кол-во скачиваний: 7 )
ListViewSortTest.rar 4,35 Kb |
|||
|
||||
| Earnest |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5962 Регистрация: 17.6.2005 Где: Рязань Репутация: 33 Всего: 183 |
Что положил в итемы, то и передается... А ты, насколько я вижу, ничего туда не положил... -------------------- ... |
|||
|
||||
| neosapient |
|
||||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 672 Регистрация: 16.8.2006 Репутация: 3 Всего: 4 |
Я ни на английском, ни на русском не могу понять алгоритма мох действий по продготовке и проведению поиска.
У меня в голове лежит следующий стериотип. Я вызываю макрос
В первый параметр передаю хендл ListView Во второй параметр указатель на функцию сравнения двух элементов. В третий параметр - четырехбайтное значение, которое будет передано моей функции, в моем случае это указатель на структуру. Управление берет на себя винда. Она по какому то алгоритму (думаю qsort) начинает попарное сравнение, всех элементов. Далее сортировка. Выбираются два элемента, и передаются в функцию сравнения (вместе с третим, в котором управляющие параметры передаем себе)
Я не понимаю на каком шаге и где, мною что то кладется? Хотелось бы рабочий пример или этот подправить. |
||||
|
|||||
| Earnest |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5962 Регистрация: 17.6.2005 Где: Рязань Репутация: 33 Всего: 183 |
lParam1 и 2 это lParam из элемента лист-вью (из структуры LVITEM), который ты туда помещаешь (можешь поместить) в момент наполнения лист-вью. Пример сейчас не найду, но помню, что была тема про сортировку в лист вью, поищи.
-------------------- ... |
|||
|
||||
| neosapient |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 672 Регистрация: 16.8.2006 Репутация: 3 Всего: 4 |
Вроде разобрался.
Помещаю на момент заполнения ListView в переменную LVITEM::lParam свои значения (уменя отличные от нуля - соответствующие пересчету) и добавляю флаг LVITEM::mask |= LVIF_PARAM. затем в функции сравнения получаю входные LVITEM::lParam Начало сортировать ) Вот только второй столбец исчез когда я сменил стиль на LVITEM::mask |= LVIF_PARAM. Как исправить это недоразумение? ) Это сообщение отредактировал(а) neosapient - 24.1.2008, 14:41 Присоединённый файл ( Кол-во скачиваний: 6 )
ListViewSortTest2.rar 4,41 Kb |
|||
|
||||
| neosapient |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 672 Регистрация: 16.8.2006 Репутация: 3 Всего: 4 |
Вроде разобрался
Рабочий вариант
Для ListView есть ещё макросы ListView_SortItemsEx и ListView_SortGroups Чем эти сортиовки отличаются? Это сообщение отредактировал(а) neosapient - 24.1.2008, 15:37 Присоединённый файл ( Кол-во скачиваний: 19 )
ListViewSortTest3.rar 4,45 Kb |
|||
|
||||
![]()
|
| Правила форума "C/C++: Системное программирование и WinAPI" | |
|
|
На данный раздел распространяются Правила форума и Правила раздела С++:Общие вопросы . Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Chipset, Step, Fixin, GremlinProg, xvr. feodorv. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Системное программирование и WinAPI | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |