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