Tri dans ListView (win32)

Résolu
mogwai93 Messages postés 362 Date d'inscription mardi 31 décembre 2002 Statut Membre Dernière intervention 4 novembre 2023 - 4 nov. 2023 à 09:08
mogwai93 Messages postés 362 Date d'inscription mardi 31 décembre 2002 Statut Membre Dernière intervention 4 novembre 2023 - 4 nov. 2023 à 17:09

Bonjour,

J'ai une ListView multi colonnes et j'aimerais avoir le tri dessus (sur toutes les colonnes)

pour faire le tri :

int Tri = 1;


int CALLBACK myCompFunc(LPARAM ligne1, LPARAM ligne2, LPARAM sortParam)
{
	int res;
	char buffer [MAX_PATH], buffer2 [MAX_PATH];

	int col = sortParam;


	ListView_GetItemText(hListView, ligne1, col, buffer, sizeof(buffer));
	ListView_GetItemText(hListView, ligne2, col, buffer2, sizeof(buffer2));

	res = strcmp (buffer, buffer2);

	if (Tri > 0) return res;
	return -res;
}

Lors du clic sur la colonne du ListView

	NMLISTVIEW*    pListView = (NMLISTVIEW*)lParam;
	ListView_SortItems(hListView, myCompFunc, pListView->iSubItem);
	Tri = - Tri;

Pour insérer mes lignes :

	item.mask = LVIF_TEXT | LVIF_PARAM;
	item.iItem = index;
	item.lParam = index;
	item.pszText = (LPTSTR)text;
	item.iSubItem = 0;
	ListView_InsertItem(hListView, item);

Pour alimenter mes colonnes :

	item.mask = LVIF_TEXT;
	item.iItem = index;
	item.pszText = (LPTSTR)text;
	item.iSubItem = subIndex;
	ListView_SetItem(hListView, item);

Le remplissage de ma ListView fonctionne.
Le tri semble fonctionner lors du 1er clic, mais pas les suivants (quelle que soit la colonne)

D'où peut venir mon problème ?

Merci

1 réponse

mogwai93 Messages postés 362 Date d'inscription mardi 31 décembre 2002 Statut Membre Dernière intervention 4 novembre 2023
4 nov. 2023 à 17:09

Trouvé :)

Il fallait mettre :

ListView_SortItemsEx(hListView, myCompFunc, pListView->iSubItem);

0
Rejoignez-nous