close

由於在CListCtrl 做排序的時候遇到一些問題,索性不照正統作法來解決,直接在每個使用CListCtrl的地方各自增加所要的排列方式。

1.宣告 ClistCtrl * m_ListDemo;

2.取得新增ClistCtrl物件的位址:

   m_ListDemo = (CListCtrl*)GetDlgItem(IDC_LIST_DEMO);

3.增加CallBack Function 給 SortItems()來使用:

int CALLBACK CompareFunc(LPARAM lParam1, LPARAM lParam2, LPARAM lParamSort)
{
    
CListCtrl  *pList=(CListCtrl *)lParamSort;
     LVFINDINFO findInfo; 
     findInfo.flags 
= LVFI_PARAM; 
     findInfo.lParam 
= lParam1; 
     
int iItem1 = pList->FindItem(&findInfo, -1); 
     findInfo.lParam 
= lParam2; 
     
int iItem2 = pList->FindItem(&findInfo, -1); 
     CString strItem1 
= pList->GetItemText(iItem1,isub); 
     CString strItem2 
= pList->GetItemText(iItem2,isub);
    
return strcmp(strItem2, strItem1);
}

4.設定List的header和增加Item:

 m_ListDemo->SetExtendedStyle(LVS_EX_GRIDLINES | LVS_EX_FULLROWSELECT);
 m_ListDemo->InsertColumn(0,"Name",LVCFMT_LEFT,100);
 m_ListDemo->InsertColumn(1,"Age",LVCFMT_LEFT,100);
 m_ListDemo->InsertColumn(2,"Score",LVCFMT_LEFT,100);

 m_ListDemo->InsertItem(0,"XXX",0);    
 m_ListDemo->SetItemText(0,1,"25");         
 m_ListDemo->SetItemText(0,2,"99");    

 m_ListDemo->InsertItem(1,"OOO",0);    
 m_ListDemo->SetItemText(1,1,"26");          
 m_ListDemo->SetItemText(1,2,"80");   

//如果要用SortItems做排序,此ItemData必須設定。
 m_ListDemo->SetItemData(0, 0);     
 m_ListDemo->SetItemData(1, 1);

5.執行CListCtrl Class中的SortItems():

  m_ListDemo->SortItems(CompareFunc, m_ListDemo);


全站熱搜
創作者介紹
創作者 weiwei 的頭像
weiwei

維維 練肖喂~~~

weiwei 發表在 痞客邦 留言(0) 人氣()