Udostępnij za pośrednictwem


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 );
}

Zobacz też

Informacje

Klasa CListCtrl

Wykres hierarchii

LVM_SORTITEMSEX

CListCtrl::SortItems

LVM_SORTITEMS

LVM_GETITEM