It looks like your problem is in sorting style of your list control.
Either change this style to NONE (in resource editor)
or (the best way for you)
correct your code:
Why are you using this-> when accessing m_ListCtrl? You don't need that, just write m_ListCtrl.
Why are you using Format("%s") to assign a string to another? Just assign it with s = name. To add a blank, write s = " " + name;
When adding an item with InsertItem(), you can specify an item index. However, this is just a request, it is not guaranteed that the item will be inserted at that position. That's why InsertItem() returns the actual item index, and you should use that in your call to SetItemText(), not your original index. Especially when the list control is sorted, the index will differ from the one you supplied, so I suspect that this is your actual problem.
Bookmarks