SortItems d'une clistctrl ne marche pas!

aabhanane Messages postés 34 Date d'inscription jeudi 31 mars 2005 Statut Membre Dernière intervention 28 juillet 2005 - 28 juil. 2005 à 11:23
cs_saladin Messages postés 3 Date d'inscription vendredi 23 mai 2003 Statut Membre Dernière intervention 2 août 2005 - 2 août 2005 à 10:05
Bonjour à tous,

J'ai insérer une listctrl dans ma boite de dialogue, et je veux trier les éléments de cette liste.

J'ai pris l'exemple sur la msdn mais ça ne marche pas!!

voici le code que j'ai mis:

static int CALLBACK MyCompareProc(LPARAM lParam1, LPARAM lParam2, LPARAM lParamSort)

{

// lParamSort contains a pointer to the list view control.

CListCtrl* pListCtrl = (CListCtrl*) lParamSort;

CString strItem1 = pListCtrl->GetItemText(lParam1, 0);

CString strItem2 = pListCtrl->GetItemText(lParam2, 0);



LVITEM lvi1;

ZeroMemory(&lvi1, sizeof(LVITEM));

lvi1.iItem = lParam1;

return strcmp(strItem2, strItem1);

}



void CMyListCtrl::snip_CListCtrl_SortItems()

{

// Sort the list view items using my callback procedure.

SortItems(MyCompareProc, (LPARAM) this);

}



Quand je fais appel à la fonction snip_CListCtrl_SortItems(), le
programme n'entre pas dans la fonction de callback: MyCompareProc!!

Quelqu'un pourrait m'aider sur ce point svp?

Merci,

Hanane

1 réponse

cs_saladin Messages postés 3 Date d'inscription vendredi 23 mai 2003 Statut Membre Dernière intervention 2 août 2005
2 août 2005 à 10:05
Il faut appeler la méthode sortitems via le message LVN_COLUMNCLICK par exemple.

...
ON_NOTIFY_REFLECT(LVN_COLUMNCLICK, OnColumnclick)
...

void CMaListe::OnColumnclick(NMHDR* pNMHDR, LRESULT* pResult)
{
NM_LISTVIEW* pNMListView = (NM_LISTVIEW*)pNMHDR;
m_iSortColumn = pNMListView->iSubItem;

SortItems(CompareFunction, (LPARAM) this);

*pResult = 0;
}

Je te conseille de créer une classe qui hérite d'un CListCtrl pour gérer ton controle plutot que de gérer les evenements de ton controle dans la classe (window, dialog ...) qui contient ta liste.
0