Condividi tramite


CListCtrl::SortItemsEx

Ordina gli elementi del controllo visualizzazione elenco corrente utilizzando una funzione di confronto definita dall'applicazione.

BOOL SortItemsEx(
     PFNLVCOMPARE pfnCompare, 
     DWORD_PTR dwData
);

Parametri

Parametro

Descrizione

[in] pfnCompare

L'indirizzo della funzione di confronto definita dall'applicazione.

L'operazione di ordinamento chiama la funzione di confronto quando l'ordine relativo di due elementi elenco è necessario determinare da. La funzione di confronto deve essere un membro statico di una classe o una funzione autonoma che non è un membro di una classe.

[in] dwData

Valore definito da passato alla funzione di confronto.

Valore restituito

true se questo metodo ha esito positivo; in caso contrario, false.

Note

Questo metodo modifica l'indice di ogni elemento per riflettere la nuova sequenza.

La funzione di confronto, pfnCompare, ha il formato seguente:

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

Questo messaggio è simile LVM_SORTITEMS, ad eccezione del tipo di dati passato alla funzione di confronto. In LVM_SORTITEMS, lParam1 e lParam2 sono i valori degli elementi da confrontare. In LVM_SORTITEMSEX, lParam1 è l'indice corrente del primo elemento da confrontare e lParam2 è l'indice corrente del secondo elemento. È possibile inviare un messaggio LVM_GETITEMTEXT per recuperare ulteriori informazioni su un elemento.

La funzione di confronto deve restituire un valore negativo se il primo elemento precede il secondo, un valore positivo se il primo elemento segue il secondo, o zero se i due elementi sono uguali.

Nota

Durante il processo di ordinamento, il contenuto della visualizzazione elenco sono instabili.Se la funzione di callback invia i messaggi al controllo elenco diverso da LVM_GETITEM, i risultati sono imprevedibili.

Questo metodo invia il messaggio LVM_SORTITEMSEX, come descritto in Windows SDK.

Requisiti

intestazione: afxcmn.h

Questo metodo è supportato in Windows 2000, Windows NT 4.0 con Internet Explorer 5, Windows 98 e versioni successive.

Esempio

Nell'esempio di codice definisce una variabile, m_listCtrl, utilizzata per accedere al controllo elenco corrente. Questa variabile viene utilizzata nell'esempio seguente.

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

Nell'esempio di codice riportato di seguito viene illustrato l'utilizzo del metodo SortItemEx. In una sezione precedente di questo esempio di codice, creato un controllo elenco che visualizza due colonne denominato "ClientID" e "conversione" in una visualizzazione report. Nell'esempio di codice ordina la tabella mediante i valori nella colonna "conversione".

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

Vedere anche

Riferimenti

Classe CListCtrl

Grafico delle gerarchie

LVM_SORTITEMSEX

CListCtrl::SortItems

LVM_SORTITEMS

LVM_GETITEM