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