CListCtrl::SortItem Problem!!!!!
-
Habe mir das Beispiel aus der MSDN angesehen:
// Sort the item in reverse alphabetical order. 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); return strcmp(strItem2, strItem1); } void snip_CListCtrl_SortItems() { // The pointer to my list view control. extern CListCtrl* pmyListCtrl; // Sort the list view items using my callback procedure. pmyListCtrl->SortItems(MyCompareProc, (LPARAM) pmyListCtrl); }
Sieht ja ganz gut aus, aber wo sage ich welches ListCtrl er Sortieren soll und nach welcher Spalte ??????
[ Dieser Beitrag wurde am 14.09.2002 um 15:42 Uhr von Fink Christoph editiert. ]
-
// Sort the item in reverse alphabetical order. 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);//lParam1 ist Zeile 1, 0 ->erste Spalte CString strItem2 = pListCtrl->GetItemText(lParam2, 0););//lParam2 ist Zeile 2, 0 ->erste Spalte return strcmp(strItem2, strItem1); }
-
Und wo definiere ich welche ListCrtl sortiert wird????
-
Nein. lparam1&2 sind NICHT die Zeilen.
Dort wird nur der Wert übergeben den man bei InsertItem angegeben hat (TVIF_PARAM)Mit z.B. FindItem kann man sich dann die Zeile holen...
LVN_COLUMNCLICK behandeln für das auf die Spalte klicken.
-
Was muss ich jetzt machen damit sich die ListCtrl IDC_STATISTIK bei Columnclick nach der geklickten Spalte sortiert????
-
Weiß das niemand????
Oder hat jemand eine andere Lösung????????
-
z.B.
CListCtrl* pList = Get... for(int i = 0;i < 25;++i) { pList->InsertItem(i,"Text"); pList->SetItemData(i,i); // Den ItemData Wert kannst du auch bei InsertItem mit angeben // war jetzt nur zu faul }
Bei deiner SortItem-Callback Proc kannst du dann mit FindItem(...) den Index holen und anschließend überprüfen ob die zwei Zeilen gleich oder kleiner/größer sind. Ist zwar nicht gerade die schnellst Lösung aber es funktioniert.
[ Dieser Beitrag wurde am 20.09.2002 um 13:47 Uhr von Nemesyzz editiert. ]
-
Könntest du mir das mit FinItem noch ein wenig genauer erklären???