Форум: "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.011 c