Partilhar via


CListCtrl::SortItemsEx

Classifica os itens do controle corrente modo de exibição de lista usando uma função de comparação definido pelo aplicativo.

BOOL SortItemsEx(
          PFNLVCOMPARE pfnCompare, 
     DWORD_PTR dwData
);

Parâmetros

Parâmetro

Descrição

[in] pfnCompare

Endereço da função de comparação definido pelo aplicativo.

A operação de classificar chama a função de comparação sempre que a ordem relativa de dois itens de lista precisa ser determinada.A função de comparação deve ser um membro estático de uma classe ou uma função independente que não é um membro de qualquer classe.

[in] dwData

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

Valor de retorno

true Se esse método for bem-sucedida; caso contrário, false.

Comentários

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

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

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

Esta mensagem é como LVM_SORTITEMS, exceto para o tipo de informações passado para a função de comparação.In LVM_SORTITEMS, lParam1 e lParam2 são os valores dos itens para comparar. In LVM_SORTITEMSEX, lParam1 é o corrente índice do primeiro item para comparar e lParam2 é o índice corrente do segundo item. Você pode enviar um LVM_GETITEMTEXTmensagem de para recuperar mais informações sobre um item.

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

Observação:

Durante o processo de classificação, o Sumário de exibição de lista é instável.Se a função de retorno de chamada envia todas as mensagens para o controle de exibição de lista diferente de LVM_GETITEM, os resultados serão imprevisíveis.

Esse método envia o LVM_SORTITEMSEX mensagem, que é descrita no Windows SDK.

Requisitos

Cabeçalho: afxcmn.h

Esse método é suportado no Windows 2000, Windows NT 4.0 com o Internet Explorer 5, Windows 98 e posterior.

Exemplo

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

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

O exemplo de código a seguir demonstra o SortItemEx método. Em uma seção anterior deste exemplo de código, criamos um controle de exibição de lista que exibe duas colunas intituladas "ClientID" e "classificação" em um modo de exibição de relatório.O exemplo de código a seguir classifica a tabela usando os valores na coluna "classificação".

// 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 de hierarquia

LVM_SORTITEMSEX

CListCtrl::SortItems

LVM_SORTITEMS

LVM_GETITEM

Outros recursos

CListCtrl membros