Ich werd nun echt bald wahnsinnig. Ich habe nun in größeren zeitlichen Abständen immer wieder versucht, die Suche EINMAL erfolgreich zu implementieren, aber wirklich ohne Erfolg...
Dies ist meine vereinfachte Comparefunktion um es testen zu können:
Code:
int CALLBACK MyCompareProc (LPARAM lParam1, LPARAM lParam2, LPARAM lParamSort)
{
if ( lParam1 < lParam2 ) return +1;
if ( lParam1 > lParam2 ) return -1;
return 0;
}
Nur beim Aufruf scheiter ich echt kläglich:
Die lustige Standardvariante
Code:
pView->m_listCtrl.SortItems(MyCompareProc, (LPARAM) &pView->m_listCtrl );
bringt folgenden Fehler:
"c:\Develop\Projects\FileExplorer\FileExplorerDoc.cpp(154): error C2664: 'CListCtrl::SortItems' : cannot convert parameter 1 from 'int (LPARAM,LPARAM,LPARAM)' to 'PFNLVCOMPARE'"
Deshalb dachte ich, casten wir das ganze mal in PFNLVCOMPARE, hat aber leider auch nichts geholfen:
Code:
pView->m_listCtrl.SortItems((PFNLVCOMPARE)MyCompareProc, (LPARAM) &pView->m_listCtrl );
Bringt folgenden Fehler:
" c:\Develop\Projects\FileExplorer\FileExplorerDoc.cpp(152): error C2440: 'type cast' : cannot convert from 'overloaded-function' to 'PFNLVCOMPARE' "
Code:
pView->m_listCtrl.SortItems((PFNLVCOMPARE)MyCompareProc, (DWORD)this );
Bringt den Fehler:
" c:\Develop\Projects\FileExplorer\FileExplorerDoc.cpp(153): error C2440: 'type cast' : cannot convert from 'overloaded-function' to 'PFNLVCOMPARE' "
Habe nun gelesen, dass das msdn Beispiel falsch ist und man erst noch mittels CListCtrl::SetItemData den 32 bit - Wert speichern muss. Also habe ich folgenden Funktionsaufruf zugefügt:
Code:
for (int i=0;i < pView->m_listCtrl.GetItemCount();i++)
{
pView->m_listCtrl.SetItemData(i, i);
}
Aber auch das scheint den Fehler nich zu beheben...
WAS KANN ICH DENN NUN NOCH TUN?!