Kachelator hat gesagt.:
Das darf keine Memberfunktion sein. Richtig ist
Code:
int CALLBACK sortitems(LPARAM lParam1, LPARAM lParam2, LPARAM lParamSort)
heißt das dann, dass ich die im header - file gar nich definieren darf?!
Ich möchte auch mein CListCtrl nach Größe, Name und Erstellungsdatum sortieren lassen können.
Bisher habe ich dafür erstmal folgenden Code geschrieben, um nur einmal diese Callbackfunktion in den Code zu bekommen:
Code:
void CColumnLevelView::OnRButtonDown(UINT nFlags, CPoint point)
{
CListCtrl m_ctlListResult;
m_ctlListResult.SortItems( sortitems, 0 );
CFileExplorerLevelView::OnRButtonDown(nFlags, point);
}
int CALLBACK sortitems( LPARAM lParam1, LPARAM lParam2, LPARAM lParamSort )
{
TRACE( "%d, %d\n", lParam1, lParam2 );
if ( lParam1 < lParam2 ) return +1;
if ( lParam1 > lParam2 ) return -1;
return 0;
}
und in meinem header - file habe ich die callback - Funktion folgendermaßen definiert:
Code:
int CALLBACK sortitems( LPARAM lParam1, LPARAM lParam2, LPARAM lParamSort );
Sollte ich das besser lassen?!
Was ich vielleicht auch noch dazu sagen sollte:
Ich nutze die CListCtrl wohl nicht so, wie man sie normalerweise nutzt...
Ich habe einen kleinen FileExplorer programmiert.
Wann immer ich mir den Inhalt eines Ordners anzeigen lassen möchte, wird eine neue Spalte mit dem Inhalt erzeugt. Und auch jedesmal ein neues CListCtrl, mit lediglich dem Inhalt des einen Ordners. Somit habe ich in meinem ListCtrl nicht verschiedene Spalten, oder solche Scherze. Ich weiß, dass ich besser eine andere Datenstruktur benutzt hätte, um den ganzen overhead zu sparen, aber das is nun n bißchen zu spät.
Auf jeden Fall soll nun jede Spalte / also jeder Ordnerinhalt einzeln sortierbar sein. Und zwar nicht, indem man auf das oberste Element der ListCtrl klickt, sondern durch einen Klick auf einen Button, oder Rechtsklick, oder sonstwas.
Wie kann ich das in diesem Fall lösen?!
Was auch noch zu erwähnen ist, ist das ich in das ListCtrl einfach nur Zeiger auf Instanzen meiner Klasse FileItem speichere, ich also nach Attributren des Zeigers sortieren möchte.
Also im ListCtrl werden die Zeiger auf die FileItem Objekte gespeichert. Ein FileItem hat die Attribute: Name, Größe, Erstellungsdatum, nach denen ja nacher die Elemente der ListCtrl sortiert werden sollen.
Und irgendwie steig ich bei der ListCtrl::SortItems nicht wirklich durch.
Gibt es für meinen Einsatz dieser Datenstruktur eine möglichkeit die Einträge nach meinen Wünschen zu sortieren?
Danke für jede Hilfe