Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "WinAPI";
Текущий архив: 2003.05.15;
Скачать: [xml.tar.bz2];

Вниз

Сортировка итемов в 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 вся ветка

Форум: "WinAPI";
Текущий архив: 2003.05.15;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.45 MB
Время: 0.008 c
7-47023
Snap
2003-03-17 18:52
2003.05.15
Можно ли отследить что мышка была нажата или передвинута программно, а не юзером?


14-46936
ZeroDivide
2003-04-23 16:06
2003.05.15
Delphi challenge. Авторские права и стимул соревнований


3-46565
karl21
2003-04-24 23:09
2003.05.15
Мастера! подскажите как получить максимальную сумму по разным год


1-46796
TALLA_
2003-05-02 12:16
2003.05.15
Excel


14-46983
VID
2003-04-27 16:00
2003.05.15
100Гб винт и ABIT BH-6





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский