Известно, что в контроле ListView можно сортировать элементы так, как этого хочется, т.е. пишется собственная функция сортировки, ей передаются три параметра - индексы элементов и параметр сортировки, а она возвращает либо 0, либо -1, либо +1. И тогда посылая контролу сообщение LVM_SORTITEMS, передавая в wParam параметр сортировки (можно ноль - это на усмотрение того, кто писал процедуру сортировки) и в lParam адрес нашей функции, можно отсортировать элементы как угодно.
Что касается TreeView, то для него есть сообщение TVM_SORTCHILDREN. И я думаю, что аналогичный метод пройдет и здесь.
Если тебя заинтересовало все это, то намыль
28021986@ua.fm или
28021986@rambler.ru, и вместе попробуем разобраться в этой бойде! (Что касается ListView'а, то с ним я разбирался - даже где-то исходник валяется на Асме...

)