CListCtrl::SortItemsEx
Seřadí položky aktuálního ovládacího prvku zobrazení seznamu pomocí funkce porovnání definované aplikací.
BOOL SortItemsEx(
PFNLVCOMPARE pfnCompare,
DWORD_PTR dwData
);
Parametry
Parametr |
Description |
---|---|
[v]pfnCompare |
Adresa funkce porovnání definované aplikací. Operace řazení volání funkce porovnání pokaždé, když potřebuje určuje relativní pořadí dvou položek seznamu.Porovnání funkce musí být statický člen třídy nebo samostatné funkce, která není členem žádné třídy. |
[v]dwData |
Hodnota definovaná aplikací předaný funkci porovnání. |
Vrácená hodnota
truePokud je tato metoda úspěšná. jinak false .
Poznámky
Tato metoda změny indexu každé položky tak, aby odrážela nové pořadí.
Funkce porovnání pfnCompare , má následující tvar:
int CALLBACK CompareFunc(LPARAM lParam1, LPARAM lParam2, LPARAM lParamSort);
Tato zpráva je podobně jako LVM_SORTITEMS, s výjimkou typ informace předané funkci porovnání.V LVM_SORTITEMS, lParam1 a lParam2 jsou hodnoty položky, které chcete porovnat.V LVM_SORTITEMSEX, lParam1 je první položky k porovnání aktuálního indexu a lParam2 je aktuální index druhou položku.Můžete odeslat LVM_GETITEMTEXT zpráva získat další informace o položce.
Porovnání funkce musí vracet zápornou hodnotu, pokud první položku mělo předcházet druhé, kladná hodnota, pokud první položka má následovat druhý nebo nula Pokud dvě položky jsou stejné.
[!POZNÁMKA]
Během procesu třídění obsah zobrazení seznamu nestabilní.Pokud funkci zpětného volání odeslány všechny zprávy na ovládací prvek zobrazení seznamu jiné než LVM_GETITEM, nelze výsledky předvídat.
Tato metoda odesílá LVM_SORTITEMSEX zprávy, která je popsána v .
Požadavky
Záhlaví: afxcmn.h
Tato metoda je podporována v systému Windows 2000, Windows NT 4.0 s aplikací Internet Explorer 5, Windows 98 a novější.
Příklad
Následující příklad kódu definuje proměnné, m_listCtrl , je pro aktuální zobrazení seznamu řízení přístupu.Tato proměnná se používá v následujícím příkladu.
public:
// Variable used to access the list control.
CListCtrl m_listCtrl;
Následující příklad kódu ukazuje SortItemEx metoda.V předchozí části tohoto příkladu kódu jsme vytvořili zobrazení seznamu ovládací prvek zobrazující dva sloupce v zobrazení sestavy s názvem "ClientID" a "Třídu".Následující příklad kódu jsou v tabulce pomocí hodnoty ve sloupci "Třídu".
// The ListCompareFunc() method is a global function used by SortItemEx().
int CALLBACK ListCompareFunc(
LPARAM lParam1,
LPARAM lParam2,
LPARAM lParamSort)
{
CListCtrl* pListCtrl = (CListCtrl*) lParamSort;
CString strItem1 = pListCtrl->GetItemText(static_cast<int>(lParam1), 1);
CString strItem2 = pListCtrl->GetItemText(static_cast<int>(lParam2), 1);
int x1 = _tstoi(strItem1.GetBuffer());
int x2 = _tstoi(strItem2.GetBuffer());
int result = 0;
if ((x1 - x2) < 0)
result = -1;
else if ((x1 - x2) == 0)
result = 0;
else
result = 1;
return result;
}
void CCListCtrl_s2Dlg::OnBnClickedButton1()
{
// SortItemsEx
m_listCtrl.SortItemsEx( ListCompareFunc, (LPARAM)&m_listCtrl );
}