ListView sortieren
-
Hi,
ich versuche zur Zeit meine ListView Items zu sortieren(anhand des Textes in der ersten Spalte), bekomm es aber einfach nicht hin. Ich zeig erstma den Quelltext der Callback Funktion zum sortieren.
int CALLBACK ListViewSort(LPARAM p1, LPARAM p2, LPARAM p3) { HWND hListView = (HWND)p3; wchar_t acString1[32] = L""; wchar_t acString2[32] = L""; ListView_GetItemText(hListView, p1, 0, acString1, 32); ListView_GetItemText(hListView, p2, 0, acString2, 32); return lstrcmp(acString1, acString2); }Mir ist erstmal egal ob er die Texte aufsteigend oder absteigend sortiert(vorerst), aber bei mir ist die sortierung einfach falsch.
Was mach ich falsch?Aso, der Funktionsaufruf von ListView_SortItem sieht so aus
ListView_SortItems(GetDlgItem(hWnd, IDLV_TEST), ListViewSort, GetDlgItem(hWnd, IDLV_TEST));Wäre echt nett wenn mir jemand helfen könnte.
MFG
DEADBEEF
-
Guckste mal hier, unten ist eine Anmerkung ("Note").
-
Erstma danke für die blitzschnelle Antwort. Aber ich hab im Internet dutzende Quellcodes gesehen wo Nachrichten an das ListView gesendet wurden und es hat alles funktioniert. Naja is ja auch egal, wenns so in der MSDN steht wirds wohl so sein. Meine Frage ist jetzt wie bewerkstellige ich das? Muss ich den Text in LVITEM->lParam zwischenspeichern und in der Callback auswerten? Kannste mir vielleicht nen Tip geben?
-
Hm, ist leider lange her, dass ich das das letzte mal gemacht hab. Aber den lParam als
wchar_t*zu missbrauchen, müsste funktionieren, hört sich gut an
-
So, konnte es erst jetzt ausprobieren. Funktioniert soweit auch wunderbar. Nach einiger Überlegung möchte ich die Items doch nicht nur nach der ersten Spalte sortieren, sondern auch die nachfolgenden berücksichtigen. Wie ich jetzt herausgefunden habe kann man in der CALLBACK doch Nachrichten an das ListView senden(zwar nur eine aber egal), nämlich LVM_GETITEM. Dass macht mir das Leben doch schon um einiges leichter. Werde es jetzt gleich ausprobieren und wenn Probleme auftauchen meld ich mich wieder.
-
BTW: Die Verwendung LVM_SORTITEMSEX ist einfacher...
http://msdn.microsoft.com/en-us/library/bb775133(VS.85).aspx