Partilhar via


CListCtrl::SortItemsEx

Classifica os itens do controle atual de exibição de lista usando uma função application-defined de comparação.

BOOL SortItemsEx(
     PFNLVCOMPARE pfnCompare, 
     DWORD_PTR dwData
);

Parâmetros

Parâmetro

Descrição

[in] pfnCompare

Endereço de função application-defined de comparação.

A operação de tipo chama a função de comparação cada vez que o pedido relativo de dois itens de lista precisa ser determinado. A função de comparação deve ser um membro estático de uma classe ou uma função autônomo que não seja um membro de nenhuma classe.

[in] dwData

Valor definido passado para a função de comparação.

Valor de retorno

true se este método é com êxito; caso contrário, false.

Comentários

Este método altera o índice de cada item para refletir a nova seqüência.

A função de comparação, pfnCompare, tem a seguinte forma:

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

Essa mensagem é como LVM_SORTITEMS, exceto pelo tipo de informação passado para a função de comparação. Em LVM_SORTITEMS, lParam1 e lParam2 são os valores de itens para comparar. Em LVM_SORTITEMSEX, lParam1 é o índice do primeiro item atual para comparar e lParam2 é o índice do item atual como. Você pode enviar uma mensagem de LVM_GETITEMTEXT para obter mais informações sobre um item.

A função de comparação deve retornar um valor negativo se o primeiro item preceder o segundo, um valor positivo se o primeiro item e o segundo, ou zera se os dois itens são iguais.

Dica

Durante o processo de classificação, o conteúdo de exibição de lista são instáveis.Se a função de retorno de chamada envia quaisquer mensagens ao controle de list view a não ser LVM_GETITEM, os resultados são imprevisíveis.

Este método envia a mensagem de LVM_SORTITEMSEX , que é descrita em Windows SDK.

Requisitos

Cabeçalho: afxcmn.h

Este método é suportado no Windows 2000, Windows NT 4.0 com a Internet Explorer 5, Windows 98, e posteriormente.

Exemplo

O exemplo de código a seguir define uma variável, m_listCtrl, que é usada para acessar o controle atual de exibição de lista. Esta variável é usado no exemplo a seguir.

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

O exemplo de código demonstra o método de SortItemEx . Em uma seção anterior de este exemplo de código, nós criaremos um controle de exibição de lista que exibe duas colunas intitulassem “ClientID” e “classificar” em um visualizador de relatório. O exemplo de código classificar a tabela usando os valores na coluna de “classificar”.

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

Consulte também

Referência

Classe CListCtrl

Gráfico da hierarquia

LVM_SORTITEMSEX

CListCtrl::SortItems

LVM_SORTITEMS

LVM_GETITEM