Bonjour à tous et toutes !

Je suis confronté à un tout petit problème dans la gestion d'une boîte liste.

Dans mon programme, j'ai une liste chaînée d'éléments dont les pointeurs ont été communiqués à une boîte liste Windows (attributs lbs_OwnerDrawFixed mais pas lbs_HasStrings).
Mon programme s'occupe donc de dessiner lui-même les éléments de la boîte liste (messages wm_DrawItem - pas de problème) et de les trier (messages wm_CompareItem - pas de problème non plus).

Ma boîte liste peut être triée de deux façons différentes et c'est là qu'intervient mon problème : lorsque je change de méthode de tri, je voudrais immédiatement re-sélectionner l'élément qui était sélectionné avant le tri.

Là, je sèche : comment faire, puisque les index de départ sont perdus et puisque je ne peux faire appel ni à lb_FindString ni à lb_SelectString (vu que la boîte liste ne possède pas les données qu'elle doit afficher).

Quelqu'un aurait-il une idée ?