Probleme bei Clist SortItem
-
Ich rufe SortItem einmal bei OnInit meines Dialogs auf und dann soll es beim Headerclick aufgerufen werden.Bei OnInit klapp es und beim Headerclick nicht.
Erstmal die Vergleichs Funktion:
int CALLBACK CompareFunc(LPARAM lParam1, LPARAM lParam2,LPARAM lParamSort) { CString e1,e2; bool desc = false; int SortBy =(int)lParamSort; if(SortBy > 5) { desc = true; SortBy -= 5; } LVFINDINFO lvf; lvf.flags = LVFI_PARAM; lvf.lParam =lParam1; int ind = l->FindItem(&lvf);//Diese Zeile verursacht den Fehler e1 = l->GetItemText(ind,SortBy); lvf.lParam =lParam2; e2 = l->GetItemText(l->FindItem(&lvf),SortBy); int rv =0; int i1,i2; switch(SortBy) { case 1: case 2: if(e1 == e2) { rv =0; } if(e1 > e2) { rv =1; } if(e1 < e2) { rv =-1; } break; case 3://Weggekürzt break; case 4://Weggekürzt break; case 5://Weggekürzt break; } if(desc) { rv *= -1; } return rv; }
Und hier der Code für den Headerclcik:
void SortDialog::OnItemclickList1(NMHDR* pNMHDR, LRESULT* pResult) { HD_NOTIFY *phdn = (HD_NOTIFY *) pNMHDR; if(phdn->iItem > 0 && phdn->iItem <6) { if(phdn->iItem == SortBy) { SortBy +=5; } else { SortBy = phdn->iItem; } m_SortListe.SortItems(CompareFunc,SortBy); } *pResult = 0; }
[ Dieser Beitrag wurde am 17.04.2003 um 11:19 Uhr von Andorxor editiert. ]
-
Sicherlich ist es nur ein Versehen von Dir, deshalb möchte ich Dich darauf hinweisen, dass
int ind = l->FindItem(&lvf);//Diese Zeile verursacht den Fehler
die uns unbekannte Variable l benutzt und niemand kann Dir bei den wichtigsten fehlenden Informationen helfen!
-
l ist die Liste
[ Dieser Beitrag wurde am 17.04.2003 um 13:48 Uhr von Andorxor editiert. ]
-
Ehrlich gesagt sieht OnItemclickList1 nicht wie eine Nachricht für ein ColumnClick-Ereignis aus. Mit welcher Nachricht ist die Funktion verknüpft? Wird sie überhaupt aufgerufen?
[ Dieser Beitrag wurde am 17.04.2003 um 14:01 Uhr von MFK editiert. ]
-
l ist die Liste
Da versucht man mal nett zu sein und dann bekommt man solche Antworten
:o
Als ob mir das nicht klar wär!
//Diese Zeile verursacht den Fehler
Und dann noch diese wunderschöne Fehlerbeschreibung!
-
MFK:
Die Funktion ist mit HDN_ITEMCLICK verknüpft und wird aufgerufen.
Das neu reinschreiben des Index in lParam bring auch nichtsReneG:
Du hast geschrieben:"die uns unbekannte Variable l benutzt ",da habe ich gedacht das du das wissen willst.
Die Fehlerbeschreibung ist so ungenau,weil ich nicht mehr über den Fehler weiss.[ Dieser Beitrag wurde am 17.04.2003 um 14:18 Uhr von Andorxor editiert. ]
-
Nunja, wenn l nicht die Liste wäre, würde der Compiler ja einen Fehler bringen, also muss es ein Laufzeitfehler sein. Und einen Laufzeitfehler kann man nur finden, indem Du uns aufzeigst, wann und wo l initialisiert wird und welchen Gültigkeitsbereich es hat.
Weiterhin würde ich Dir vorschlagen, Dich eher nach dem Beispielcode, welcher codeproject zu finden ist, zu richten, da dieser einer besser an objektorientierte Programmierung hält und vor allem auch funktioniert!
-
Danke Rene jetzt läuft es