Вниз
Скачать: CL | DM;

Сортировка итемов в ListView, созданном на WinApi.   Найти похожие ветки 

← →
DVM ©   (2003-03-13 15:15) [0]

Как реализовать? То, что есть сообщение и соответствующая макрокоманда мне известно, но они требуют указать некую функцию (обратного вызова?) которая и должна сравнивать итемы и возвращать -1, 0, 1, в зависимости от результата сравнения.
Кто делал подобное? Приведите, если можно, пример такой функции (итемы надо сортировать по алфавиту).
Заранее спасибо.


← →
Suntechnic ©   (2003-03-13 15:29) [1]

А в чём проблема? Callback ф-цию написать?


← →
DVM ©   (2003-03-13 15:41) [2]

Я что-то никак не пойму, что я должен сравнивать (и как) в своей функции, если ей передаются некие LParam1, Lparam2 (идентифицирующие итемы, вероятно). И как зная эти идентификаторы, перейти к итемам? Если их искать, то непонятно как определить тот ListView откуда они. Ведь эта функция, я полагаю, может быть одна на все приложение, в котором несколько ListView.


← →
Suntechnic ©   (2003-03-13 15:51) [3]

Я что-то никак не пойму, что я должен сравнивать (и как) в своей функции, если ей передаются некие LParam1, Lparam2 (идентифицирующие итемы, вероятно). И как зная эти идентификаторы, перейти к итемам?
Читаем хелп:
The lParam1 parameter is the 32-bit value associated with the first item being compared; and the lParam2 parameter is the value associated with the second item. These are the values that were specified in the lParam member of the items" LV_ITEM
structure when they were inserted into the list.

Ведь эта функция, я полагаю, может быть одна на все приложение, в котором несколько ListView.

Всё зависит от того что сравнивать в ф-ции и что присваивать значению lParam. Если алгоритмя один и тот же и lParam это те же данные, то можно использовать одну ф-цию для всех ListView, но обычно это делается не так... В lParam при добавлении item в ListView, обычно кладётся указатель на данные этого itema (в самом простом случае это может быть отображаемое имя, но как правило это указатель на объект который представлен item-ом). Затем в CompareFunc ты извлекаешь данные по этим указателям и сравниваешь их возвращая одно из значений (The comparison function must return a negative value if the first item should precede the second, a positive value if the first item should follow the second, or zero if the two items are equivalent.)


← →
DVM ©   (2003-03-13 16:23) [4]

Спасибо. Мне именно назначение LParam итема было непонятно.

Получается если при добавлении итема в список в LParam итема ничего не положить, то и отсортировать итемы будет нельзя?


← →
Suntechnic ©   (2003-03-13 16:36) [5]

>DVM ©
Получается если при добавлении итема в список в LParam итема ничего не положить, то и отсортировать итемы будет нельзя?


Именно так! Более того lParam это единственное место куда можно положить данные ассоциированные с item-ом, поэтому lParam очень широко используется и не только для сортировки.



Страницы: 1 вся ветка

Скачать: CL | DM;



Память: 0.46 MB
Время: 0.012 c
3-46594
Igor Mish
2003-04-23 11:31
2003.05.15
Испорченый файл ??


14-46928
Карелин Артем
2003-04-25 12:32
2003.05.15
Структура Классификатора Адресов и логические связи.


1-46695
Rradion
2003-05-01 19:53
2003.05.15
Помогите плиз отсортировать Массив.


14-46923
Dim!S
2003-04-25 11:41
2003.05.15
Oracle, MSSQL или FireBird


14-46920
race1
2003-04-24 14:46
2003.05.15
вопросы




   Наверх