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