CListCtrl::SortItemsEx
Sortuje elementy sterowania bieżącego widoku listy za pomocą funkcji Porównywanie przez aplikację.
BOOL SortItemsEx(
PFNLVCOMPARE pfnCompare,
DWORD_PTR dwData
);
Parametry
Parametr |
Opis |
---|---|
[w]pfnCompare |
Adres funkcji porównania przez aplikację. Operacja sortowania wywołuje funkcję porównanie po każdym względna kolejność dwóch elementów listy musi zostać ustalona.Funkcja porównywania musi być członka statycznego klasy lub autonomicznych funkcji, która nie jest członkiem żadnej klasy. |
[w]dwData |
Przez aplikację wartości przekazanych do funkcji porównania. |
Wartość zwracana
trueJeśli ta metoda jest pomyślne; w przeciwnym razie false.
Uwagi
Ta metoda zmiany indeksu każdy element, aby odzwierciedlały nową kolejność.
Funkcja porównywania pfnCompare, ma następującą postać:
int CALLBACK CompareFunc(LPARAM lParam1, LPARAM lParam2, LPARAM lParamSort);
Ten komunikat jest jak LVM_SORTITEMS, z wyjątkiem typu informacji przekazanych do funkcji porównania.W LVM_SORTITEMS, lParam1 i lParam2 są wartości pozycji do porównania.W LVM_SORTITEMSEX, lParam1 jest bieżący indeks pierwszego elementu, aby porównać i lParam2 jest bieżący indeks drugiego elementu.Można wysłać LVM_GETITEMTEXT wiadomości, aby pobrać więcej informacji o elemencie.
Funkcja porównanie musi zwracać wartość ujemna, jeśli pierwszy element powinien poprzedzać drugi, wartość dodatnią, jeśli pierwszy element należy postępować zgodnie z drugim lub zero, jeśli dwa elementy są równe.
[!UWAGA]
W trakcie sortowania zawartość widoku listy są niestabilne.Jeśli funkcja wywołania zwrotnego wysyła komunikaty do formantu widoku listy innych niż LVM_GETITEM, wyniki są nieprzewidywalne.
Metoda ta wysyła LVM_SORTITEMSEX wiadomości, która jest opisana w Windows SDK.
Wymagania
Nagłówek: afxcmn.h
Ta metoda jest obsługiwana w systemie Windows 2000, Windows NT 4.0 z zainstalowanym programem Internet Explorer 5, Windows 98 lub nowszej.
Przykład
Poniższy przykład kodu definiuje zmienną, m_listCtrl, czyli używane do bieżącego widoku listy kontroli dostępu.Ta zmienna jest używana w następnym przykładzie.
public:
// Variable used to access the list control.
CListCtrl m_listCtrl;
Poniższy przykład kodu pokazuje SortItemEx metody.We wcześniejszej sekcji tego przykładu kodu stworzyliśmy formantu widoku listy, który wyświetla dwie kolumny zatytułowanej "ClientID" i "Klasa" w widoku raportu.Poniższy przykład kodu sortuje tabeli przy użyciu wartości w kolumnie "Klasa".
// 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 );
}