CListCtrl排序解決方案

來源:互聯網
上載者:User

在CXXXDialog中聲明下列靜態變數:

static int CALLBACK MyListCompare(LPARAM lParam1, LPARAM lParam2, LPARAM lParamSort);
static DWORD m_SortColum;
static BOOL m_bAs;
初始化:

DWORD CXXXDialog::m_SortColum = 0;
BOOL CXXXDialog::m_bAs = TRUE;

///全域函數,比較兩個項目的依據 
int   CALLBACK CXXXDialog::MyListCompare(LPARAM   lParam1,   LPARAM   lParam2,   LPARAM   lParamSort) 

 //通過傳遞的參數來得到CSortList對象指標,從而得到排序方式 
 CListCtrl* pListCtrl = (CListCtrl*) lParamSort;
 
 //通過ItemData來確定資料

 int   iCompRes; 
 CString    szComp1 = pListCtrl->GetItemText(lParam1,m_SortColum);
 CString    szComp2 = pListCtrl->GetItemText(lParam2,m_SortColum);
 
 switch(m_SortColum) 
 { 
 case(0): 
  //以第一列為根據排序   編號 
  iCompRes=atof(szComp1) <=atof(szComp2)?-1:1; 
  break; 
 case(3): 
  //以第5列為根據排序   總次數 
  iCompRes=atof(szComp1) <=atof(szComp2)?-1:1; 
  break; 
 default: 
  iCompRes=szComp1.Compare(szComp2); 
  break; 
 } 
 //根據當前的排序方式進行調整

 if(m_bAs) 
  return   iCompRes; 
 else 
  return   -iCompRes;  
}

響應訊息:
void CXXXDialog::OnColumnclickListTopicSelect(NMHDR* pNMHDR, LRESULT* pResult) 
{
      NM_LISTVIEW* pNMListView = (NM_LISTVIEW*)pNMHDR;
      m_SortColum = pNMListView->iSubItem;
      m_bAs=!m_bAs;//升序還是降序
  

      int count = m_ctrlSelectList.GetItemCount();   //行數
      for (int i=0; i<count;  i++)  
      {  
        m_ctrlSelectList.SetItemData(i,i);  //必須在SortItems前調用
      }
      m_ctrlSelectList.SortItems(MyListCompare, (LPARAM) &m_ctrlSelectList);
      *pResult = 0;
}

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.