Вопрос.
Делаю сортировку по столбцу ListView. Схема там такая - обрабатывается нотификация LVN_COLUMNCLICK где в стуктуру NMLISTVIEW попадает номер столбца. В обработчике шлется LVM_SORTITEMS, где в wparam передается номер столбца, а в lparam - callback-функция сортировки.
Эту функцию реализует сам программист, она имеет три параметра
LPARAM lParam1, LPARAM lParam2, LPARAM lParamSort
В lParam1 попадает первый сравниваемый элемент, в lParam2 попадает второй, в lParamSort попадает номер столбца.
Получаем текст Item-а и сравниваем де строки.
И здесь вот интересно. Увидев что сортировка работает как-то не так попробовал отладить. И понял, что при первом клике по столбцу в lParam1 и в lParam2 попадают элемента примерно в следующем порядке
0-1
2-3
1-3
1-2
4-5
6-7
И т.д. Т.е. функции передаются item-ы попорядку и сравнивются все со всеми.
Сортировка проходит нормально.
Но вот если щелкнуть по столбцу второй раз, в lParam1 и в lParam2 попадают уже не значения по порядку.
Да и черт с ними бы. Какая разница как сравниваются то. Но вот видимо сравнение проходит не всех со всеми наверное, но сортировка не работает - видно другой результат, а третий раз - третий и т.д. Лист не сортирован.
Функция сравнения строк работает нормально - я проверял.
Почему такое может быть?