Поделиться через


CListCtrl::SortItemsEx

Сортирует элементы текущего управления списка с помощью приложение- указанной функции сравнения.

BOOL SortItemsEx(
     PFNLVCOMPARE pfnCompare, 
     DWORD_PTR dwData
);

Параметры

Параметр

Описание

[входящий] pfnCompare

Адрес приложение- указанной функции сравнения.

Операция сортировки вызывает функцию сравнения по порядку 2 каждый раз относительным подлежащих определению необходимостей элементов списка. Функция сравнения должна быть статическим элементом класса или изолированный функцией, которая не является членом любого класса.

[входящий] dwData

Приложение- указанное значение, передаваемое функции сравнения.

Возвращаемое значение

true если этот метод выполнен успешно; в противном случае – значение false.

Заметки

Этот метод изменяет индекс каждого элемента, чтобы отразить новую последовательность.

Функция сравнения pfnCompare, имеет следующую форму:

int CALLBACK CompareFunc(LPARAM lParam1, LPARAM lParam2, LPARAM lParamSort); 

Это сообщение в LVM_SORTITEMS, за исключением типа данных, переданного функции сравнения. В LVM_SORTITEMS, lParam1 и lParam2 значения элементов для сравнения. В LVM_SORTITEMSEX, lParam1 текущий индекс первого элемента для сравнения и lParam2 текущий индекс второго элемента. Можно отправить сообщение LVM_GETITEMTEXT для получения дополнительных сведений об элементе.

Функция сравнения должна возвращать отрицательное значение, если первый элемент должен предшествует второй, то положительное значение, если первый элемент должен соответствовать вторым или 2, если вычеркивает элемента равны.

Примечание

В процессе сортировки, содержимое списка неустойчивы.Если функция обратного вызова отправляет какие-либо сообщения к элементу управления "список", за исключением LVM_GETITEM, то результаты становятся непредсказуемыми.

Этот метод отправляет сообщение LVM_SORTITEMSEX, которое описано в Windows SDK.

Требования

заголовок: afxcmn.h

Этот метод поддерживается в Windows 2000, Windows NT 4.0 с помощью Internet Explorer 5, Windows 98 и более поздних версиях.

Пример

В следующем примере кода определяется переменной m_listCtrl, которая используется для доступа к текущий элемент управления "список". Эта переменная используется в следующем примере.

public:
    // Variable used to access the list control.
    CListCtrl m_listCtrl; 

В следующем примере кода демонстрируется применение метода SortItemEx. В предыдущем шаге этого примера кода, мы создали элементе управления списка, выводится 2 столбцов озаглавили "ClientID" и "ранг" в представлении отчета. В следующем примере кода выполняется сортировка таблицы с помощью значений в столбце "ранга".

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

См. также

Ссылки

Класс CListCtrl

Диаграмма иерархии

LVM_SORTITEMSEX

CListCtrl::SortItems

LVM_SORTITEMS

LVM_GETITEM