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.

ObservaçãoObservação

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 de CListCtrl

Gráfico de hierarquia

LVM_SORTITEMSEX

CListCtrl::SortItems

LVM_SORTITEMS

LVM_GETITEM