Partager via


CListCtrl::SortItemsEx

Trie les éléments du contrôle liste view actuel à l'aide d'une fonction de comparaison définie par l'application.

BOOL SortItemsEx(
     PFNLVCOMPARE pfnCompare, 
     DWORD_PTR dwData
);

Paramètres

Paramètre

Description

[in] pfnCompare

Adresse de la fonction de comparaison définie par l'application.

L'opération de tri appelle la fonction de comparaison chaque fois que la commande relative de deux éléments de liste doit être déterminée.La fonction de comparaison doit être un membre statique d'une classe ou une fonction autonome qui n'est pas un membre d'une classe.

[in] dwData

Valeur définie par l'application passé à la fonction de comparaison.

Valeur de retour

true si cette méthode est réussie ; sinon, false.

Notes

Cette méthode remplace l'index de chaque élément pour refléter la nouvelle séquence.

La fonction de comparaison, pfnCompare, a la forme suivante :

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

Ce message est comme LVM_SORTITEMS, sauf pour le type d'informations passé à la fonction de comparaison.Dans LVM_SORTITEMS, lParam1 et lParam2 sont les valeurs des éléments à comparer.Dans LVM_SORTITEMSEX, lParam1 est l'index actuel du premier élément à comparer et lParam2 est l'index actuel du deuxième élément.Vous pouvez envoyer un message de LVM_GETITEMTEXT pour récupérer plus d'informations sur un élément.

La fonction de comparaison doit retourner une valeur négative si le premier élément précède le deuxième, une valeur positive si le premier élément suit le deuxième, ou mettent à zéro si les deux éléments sont égaux.

[!REMARQUE]

Pendant le processus de tri, le contenu de la vue Liste est instable.Si la fonction de rappel envoie les messages au contrôle liste view autre que LVM_GETITEM, les résultats sont imprévisibles.

Cette méthode envoie le message de LVM_SORTITEMSEX , qui est décrit dans Kit de développement logiciel Windows.

Configuration requise

en-tête : afxcmn.h

Cette méthode est prise en charge dans Windows 2000, Windows NT 4,0 avec Internet Explorer 5, Windows 98, et versions ultérieures.

Exemple

L'exemple de code suivant définit une variable, m_listCtrl, qui est utilisée pour accéder au contrôle liste view actuel.Cette variable est utilisée dans l'exemple suivant.

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

L'exemple de code suivant illustre la méthode SortItemEx.Dans la première section de l'exemple de code, nous avons créé un contrôle liste view que le affiche deux colonnes ont intitulé « ClientID » et « view » dans un mode Rapport.L'exemple de code suivant trie le tableau à l'aide de les valeurs dans la colonne de « view ».

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

Voir aussi

Référence

Classe de CListCtrl

Graphique de la hiérarchie

LVM_SORTITEMSEX

CListCtrl::SortItems

LVM_SORTITEMS

LVM_GETITEM