Freigeben über


CListCtrl::SortItemsEx

Sortiert die Elemente des aktuellen Listenansicht-Steuerelements, indem eine anwendungsdefinierte Vergleichsfunktion verwenden.

BOOL SortItemsEx(
     PFNLVCOMPARE pfnCompare, 
     DWORD_PTR dwData
);

Parameter

Parameter

Description

[in] pfnCompare

Adresse der anwendungsdefinierten Vergleichsfunktion.

Der Sortiervorgang ruft die Vergleichsfunktion auf jedes Mal, wenn die relative Reihenfolge von zwei Listenelementen bestimmt werden muss. Die Vergleichsfunktion muss entweder ein statischer Member einer Klasse oder eine eigenständige Funktion sein, die nicht Mitglied einer Klasse ist.

[in] dwData

Anwendungsdefinierter Wert an die Vergleichsfunktion.

Rückgabewert

true, wenn diese Methode erfolgreich ist; andernfalls false.

Hinweise

Diese Methode ändert den Index jedes Elements, um die neue Sequenz wiederzugeben.

Die Vergleichsfunktion, pfnCompare, hat das folgende Format:

int CALLBACK CompareFunc(LPARAM lParam1, LPARAM lParam2, LPARAM lParamSort); 

Diese Meldung ist wie LVM_SORTITEMS, außer dem Typ von Informationen an die Vergleichsfunktion. In LVM_SORTITEMS sind lParam1 und lParam2 die Werte der Elemente zu vergleichen. In LVM_SORTITEMSEX ist lParam1 der aktuelle Index des ersten Elements zu vergleichen, und lParam2 ist der aktuelle Index des zweiten Elements. Sie können eine LVM_GETITEMTEXT Nachricht senden, um weitere Informationen über ein Element abzurufen.

Die Vergleichsfunktion muss einen negativen Wert zurückgeben, wenn der erste Punkt das zweite vorausgeht, ein positiver Wert, wenn der erste Punkt das zweite folgt, oder auf null einstellen, wenn die beiden Elemente gleich sind.

Hinweis

Während des Sortierungsprozesses ist der Listenansichtsinhalt instabil.Wenn die Rückruffunktion alle Meldungen zum ListView-Steuerelement anders LVM_GETITEM sendet, die Ergebnisse sind unvorhersehbar.

Diese Methode sendet die LVM_SORTITEMSEX Meldung, die im Windows SDK beschrieben wird.

Anforderungen

Header: afxcmn.h

Diese Methode wird in Windows 2000, Windows NT 4.0 mit Internet Explorer 5, Windows 98 unterstützt.

Beispiel

Im folgenden Codebeispiel wird eine Variable, m_listCtrl, die verwendet wird, um auf das aktuelle Listenansicht-Steuerelement zuzugreifen. Diese Variable wird im folgenden Beispiel verwendet.

public:
    // Variable used to access the list control.
    CListCtrl m_listCtrl; 

Im folgenden Codebeispiel wird die SortItemEx-Methode veranschaulicht. In einem früheren Abschnitt dieses Codebeispiels erstellt haben, wird ein ListView-Steuerelement, das Anzeigen zwei Spalten "ClientID" und "Grad" in einer Berichtsansicht Titel. Im folgenden Codebeispiel sortiert die Tabelle, indem die Werte in der Spalte "Grad" verwendet.

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

Siehe auch

Referenz

CListCtrl-Klasse

Hierarchiediagramm

LVM_SORTITEMSEX

CListCtrl::SortItems

LVM_SORTITEMS

LVM_GETITEM