Просто задолбался с этим стилем. Код самый стандартный: Код (Text): invoke SendMessage, [hListView], LVM_GETITEMCOUNT, 0, 0 ; xor eax, eax @@: mov ecx, [ulParam] mov [_LVITEM.mask], LVIF_TEXT + LVIF_PARAM mov [_LVITEM.cchTextMax], 128 mov [_LVITEM.iItem], eax mov [_LVITEM.iSubItem], 0 mov [_LVITEM.pszText], Text mov [_LVITEM.lParam], ecx invoke SendMessage, [hListView], LVM_INSERTITEM, 0, _LVITEM В общем всё делал по MSDN, всё прекрасно работает, но стоит добавить этот долбаный LVS_SORTASCENDING, как всё становится наперекосяк. В частности при обработке (обновлении\удалении\создании) элементов, пропадают под-элементы (subitem) и перестает сохранятся выделение на выбранной позиции. Если же вместо LVM_GETITEMCOUNT, просто обнулять индекс элемента при каждой вставке, то всё встаёт на свои места, но перестаёт работать сортировка. Походил по разным форумам, в гугле смотрел, ответа не нашёл. Что не так в коде, что нужно изменить что бы заработала сортировка? Есть подозрение, что проблема как то связана с lParam, но мне нужен он, к тому же судя по MSDN там хранятся только пользовательские данные.
Не работает. Никакой разницы что я использую LVM_SETITEM или LVM_SETITEMTEXT, один и тот же эффект в обоих случаях. Но стоит мне убрать lParam, как всё встаёт на свои места (сортировка при этом перестает работать). Только вот у меня зацепка на lParam, я узнаю таким образом какой элемент мне удалить. Пишется про какой то LPSTR_TEXTCALLBACK, у меня нет никакого LPSTR_TEXTCALLBACK, ссылка там на текст который нужно вставить.
Сейчас вообще добился того, что стабильно работает независимо от присутствия стиля LVS_SORTASCENDING, сортировка при этом не работает при любом раскладе.