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