Compartir a través de


CListCtrl::SortItemsEx

Ordena los elementos del control actual de la vista de lista mediante una función definido por la aplicación de la comparación.

BOOL SortItemsEx(
     PFNLVCOMPARE pfnCompare, 
     DWORD_PTR dwData
);

Parámetros

Parámetro

Descripción

[in] pfnCompare

dirección de la función definido por la aplicación de la comparación.

La operación de ordenación llama a la función de comparación cada vez que el orden relativo de dos elementos de lista debe ser determinado. La función de comparación debe ser un miembro estático de una clase o función independiente que no es miembro de ninguna clase.

[in] dwData

Valor definido por la aplicación pasado a la función de comparación.

Valor devuelto

true si este método es correcto; si no, false.

Comentarios

este método cambia el índice de cada elemento para reflejar la nueva secuencia.

La función de comparación, pfnCompare, tiene el formato siguiente:

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

Este mensaje es como LVM_SORTITEMS, a excepción del tipo de información que se pasa a la función de comparación. En LVM_SORTITEMS, lParam1 y lParam2 son los valores de los elementos que se van a comparar. En LVM_SORTITEMSEX, lParam1 es el índice actual del primer elemento a comparar y lParam2 es el índice actual del segundo elemento. Puede enviar un mensaje de LVM_GETITEMTEXT para recuperar más información sobre un elemento.

La función de comparación debe devolver un valor negativo si el primer elemento precede al segundo, un valor positivo si el primer elemento sigue el segundo, o pone a cero si los dos elementos son iguales.

Nota

Durante el proceso de ordenación, el contenido de la vista de lista son inestables.Si la función de devolución de llamada envía los mensajes al control listview con excepción de LVM_GETITEM, los resultados son imprevisibles.

este método envía el mensaje de LVM_SORTITEMSEX , que se describe en Windows SDK.

Requisitos

encabezado: afxcmn.h

Este método se admite en Windows, Windows NT 4.0 con Internet Explorer 5, Ejecutar, y posteriormente.

Ejemplo

El ejemplo de código siguiente define una variable, m_listCtrl, que se utiliza para tener acceso al control actual de la vista de lista. esta variable se utiliza en el ejemplo siguiente.

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

En el ejemplo de código siguiente se muestra el método SortItemEx. En una sección anterior de este ejemplo de código, creamos un control listview que muestra dos columnas titularon “ClientID” y “grado” en una vista de informe. El ejemplo de código siguiente ordena la tabla mediante los valores de la columna “grado”.

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

Vea también

Referencia

CListCtrl Class

Gráfico de jerarquías

LVM_SORTITEMSEX

CListCtrl::SortItems

LVM_SORTITEMS

LVM_GETITEM