다음을 통해 공유


CListCtrl::SortItemsEx

응용 프로그램-정의 된 비교 함수를 사용 하 여 현재 목록 뷰 컨트롤의 항목을 정렬 합니다.

BOOL SortItemsEx(
     PFNLVCOMPARE pfnCompare, 
     DWORD_PTR dwData
);

매개 변수

Parameter

설명

[in] pfnCompare

응용 프로그램 정의 비교 함수의 주소입니다.

정렬 작업 두 목록 항목의 상대 순서를 결정할 수 할 때마다 비교 함수를 호출 합니다.비교 함수는 클래스의 정적 멤버 또는 클래스의 구성원이 아닌 독립 실행형 함수 여야 합니다.

[in] 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 메시지 항목에 대 한 자세한 정보를 검색 합니다.

비교 함수는 첫 번째 항목의 두 번째 앞에 야 하는 경우 음수 값을 반환 해야, 첫 번째 항목의 두 번째 또는 0이 따라야 하는 경우 양수 값 두 개의 항목이 동일 합니다.

[!참고]

목록 뷰 내용을 정렬 하는 동안 안정적이 지는.콜백 함수 목록 뷰 컨트롤에 이외의 모든 메시지를 보내는 경우 LVM_GETITEM, 결과 예측할 수 없습니다.

보내는이 메서드는 LVM_SORTITEMSEX 에서 설명 하는 메시지는 Windows SDK.

요구 사항

헤더: afxcmn.h

이상은 Internet Explorer 5 Windows NT 4.0, Windows 98, Windows 2000에서 지원 되는 메서드입니다.

예제

다음 코드 예제에서는 변수 정의 m_listCtrl, 즉 현재 목록 뷰 컨트롤에 액세스 하는 데 사용 합니다.이 변수는 다음 예제에 사용 됩니다.

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

다음 코드 예제에서는 SortItemEx 메서드를 사용하는 방법을 보여 줍니다.이 코드 예제는 이전 단원에서 "등급" 및 "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