Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2003.05.15;
Скачать: 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 вся ветка

Текущий архив: 2003.05.15;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.018 c
3-46633
tERRORist
2003-04-22 21:44
2003.05.15
Формат даты в MySQL


14-46915
Шурыгин Евгений
2003-04-22 17:38
2003.05.15
Как создать переводчик типа сократа 97?


14-46939
Rise
2003-04-25 15:26
2003.05.15
Delphi и Сайт с БД


1-46764
Кекс
2003-05-01 06:07
2003.05.15
Resize формы как в Обьект Инспекторе/Винампе


3-46570
Sergey
2003-04-25 12:19
2003.05.15
Настройка кодировки