Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
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 );
}
Observação: