VisualC++ J'va y penser ... | Ben a toi de le remplir l'itemdata, et si y a marque ds la MSDN
Citation :
The lParam1 and lParam2 parameters specify the item data for the two items being compared. The lParamSort parameter is the same as the dwData value.
|
Quand j'ai vu Code :
- pListCtrl->GetItemText(lParam1, 1);
|
dans ton code, je supposais que tu avais fait des SetItemData a l'init afin que le dword soit egale a l'indice de ton item.
Ben simplement pour l'utilisation
Code :
- m_List.InsertItem(0, _T("y" ));
- m_List.SetItemText(0, 1, _T("40000" ));
- m_List.InsertItem(1, _T("z" ));
- m_List.SetItemText(1, 1, _T("30000" ));
- m_List.InsertItem(2, _T("x" ));
- m_List.SetItemText(2, 1, _T("20000" ));
- fnvSetItemData();
- m_List.SortItems(m_fnCompare, (LPARAM)&m_List);
- ......
- void taclass::m_fnvSetItemData()
- {
- int iNum = m_List.GetItemCount();
- for (int i=0; i<iNum; i++)
- m_List.SetItemData(i, i);
- }
- int m_fnCompare(LPARAM lpar1, LPARAM lpar2, LPARAM lpardata)
- {
- CListCtrl* pList = (CListCtrl*)lpardata;
- CString csItem1 = pList->GetItemText(lpar1, 1);
- CString csItem2 = pList->GetItemText(lpar2, 1);
- return csItem1.Compare(csItem2);
- // ou suivant l'ordre
- return csItem2.Compare(csItem2);
- }
|
et tu fais SetItemData() avant chaque Sort pour remettre les ItemData correctement
C tout Message édité par VisualC++ le 08-04-2003 à 11:13:07
|