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