O
Hallo zusammen,
ich habe mir ein wenig die Klasse CMFCListCtrl vom Visual C++ 2008 Feature Pack angeschaut (C:\Program Files (x86)\Microsoft Visual Studio 10.0\Samples) da ich diese zur Aufbereitung einer Listenansicht verwenden wollte.
Hier gibt es in der NewControls Solution eine Ableitung diese Klasse, welche auch wunderbar funktioniert:
Hier das Beispiel wie die Liste aufgebaut wird:
for (int i = 0; i < nRows; i++)
{
CString str;
/*if((i>2) && (i<7) )
{
str.Format(_T("%d"), 4);
}
else if((i>25) && (i<27) )
{
str.Format(_T("%d"), 16);
}
else
{
str.Format(_T("%d"), 1);
}*/
str.Format(_T("%d"), i);
m_wndList.InsertItem(i, str);
m_wndList.SetItemData(i, i);
for (nColumn = 1; nColumn < nColumns; nColumn++)
{
str.Format(_T("Item(%d, %d)"), nColumn - 1, nColumn == 1 ? 99 - i : i + 50);
m_wndList.SetItemText(i, nColumn, str);
}
}
Sobald ich dann auf den Header der Spalte mit der Raute(#) klicke wird diese ensprechend meinen Erwartungen sortiert.
Ändere ich den Code aber wie folgt:
for (int i = 0; i < nRows; i++)
{
CString str;
if((i>2) && (i<7) )
{
str.Format(_T("%d"), 4);
}
else if((i>25) && (i<27) )
{
str.Format(_T("%d"), 16);
}
else
{
str.Format(_T("%d"), 1);
}
//str.Format(_T("%d"), i);
m_wndList.InsertItem(i, str);
m_wndList.SetItemData(i, i);
for (nColumn = 1; nColumn < nColumns; nColumn++)
{
str.Format(_T("Item(%d, %d)"), nColumn - 1, nColumn == 1 ? 99 - i : i + 50);
m_wndList.SetItemText(i, nColumn, str);
}
}
... funktioniert die Sortierung der Spalte nicht mehr. Mir ist hier nicht klar warum das der Fall ist.
Jemand eine Idee? Hab ich was übersehen?
Es scheint so als würde die Sortierung in OnCompareItem nicht mehr funktionieren sobald doppelte Werte vorhanden sind
Gruß
Onfire84