共用方式為


CListCtrl::SortItemsEx

您也可以使用應用程式定義的比較函式,目前排序清單檢視控制項中的項目。

BOOL SortItemsEx(
     PFNLVCOMPARE pfnCompare, 
     DWORD_PTR dwData
);

參數

參數

描述

[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 資訊擷取關於項目的詳細資訊。

比較函式必須傳回負值,如果第一個項目應該在第二個之前,正數值,如果第一個項目應該遵循第二,或零,而且兩個項目相等。

注意事項注意事項

在已排序的過程中,清單檢視內容不穩定。除了之外,如果 LVM_GETITEM回呼函式 (Callback Function) 傳送至任何資訊清單檢視控制項,則結果無法預期。

這個方法會將 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 方法。 在這個程式碼的前面的章節中,我們會建立顯示兩個資料行標題為「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