龙盟编程博客 | 无障碍搜索 | 云盘搜索神器
快速搜索
主页 > 软件开发 > VC开发 >

在ListCtrl中进行排序(2)

时间:2009-12-30 15:42来源:未知 作者:admin 点击:
分享到:
//初始化ListCtrl中数据列表 m_listTest.InsertColumn(0,"姓名"); m_listTest.InsertColumn(1,"年龄"); m_listTest.SetColumnWidth(0,80); m_listTest.SetColumnWidth(1,80); for(int i=0;i5;i++) { m_l

   //初始化ListCtrl中数据列表
   m_listTest.InsertColumn(0,"姓名");
   m_listTest.InsertColumn(1,"年龄");
   m_listTest.SetColumnWidth(0,80);
   m_listTest.SetColumnWidth(1,80);
   for(int i=0;i<5;i++)
   {
    m_listTest.InsertItem(i,strAllData[i].szName);
    char szAge[10];
    sprintf(szAge,"%d",strAllData[i].iAge);
    m_listTest.SetItemText(i,1,szAge);
    //设置每项的ItemData为数组中数据的索引
    //在排序函数中通过该ItemData来确定数据
    m_listTest.SetItemData(i,i);
   }
   return TRUE;  // return TRUE  unless you set the focus to a control
  }

  //处理消息
  void CSort_in_list_ctrlDlg::OnColumnclickList1(NMHDR* pNMHDR, LRESULT* pResult)
  {
   NM_LISTVIEW* pNMListView = (NM_LISTVIEW*)pNMHDR;
   //设置排序方式
   if( pNMListView->iSubItem == m_listTest.m_nSortedCol )
    m_listTest.m_fAsc = !m_listTest.m_fAsc;
   else
   {
    m_listTest.m_fAsc = TRUE;
    m_listTest.m_nSortedCol = pNMListView->iSubItem;
   }
   //调用排序函数
   m_listTest.SortItems( ListCompare, (DWORD)&m_listTest );       
   *pResult = 0;
  }
  //排序函数实现
  int CALLBACK ListCompare(LPARAM lParam1, LPARAM lParam2, LPARAM lParamSort)
  {
   //通过传递的参数来得到CSortList对象指针,从而得到排序方式
   CSortList* pV=(CSortList*)lParamSort;
 
   //通过ItemData来确定数据
   DEMO_DATA* pInfo1=strAllData+lParam1;
   DEMO_DATA* pInfo2=strAllData+lParam2;
   CString szComp1,szComp2;
   int iCompRes;
   switch(pV->m_nSortedCol)
   {
   case(0):
    //以第一列为根据排序
    szComp1=pInfo1->szName;
    szComp2=pInfo2->szName;
    iCompRes=szComp1.Compare(szComp2);
    break;
   case(1):
    //以第二列为根据排序
    if(pInfo1->iAge == pInfo2->iAge)
     iCompRes = 0;
    else
     iCompRes=(pInfo1->iAge < pInfo2->iAge)?-1:1;
    break;
   default:
    ASSERT(0);
    break;
   }
   //根据当前的排序方式进行调整
   if(pV->m_fAsc)
    return iCompRes;
   else
    return iCompRes*-1;
  }

收藏文章
表情删除后不可恢复,是否删除
取消
确定
图片正在上传,请稍后...
评论内容为空!
还没有评论,快来抢沙发吧!
按钮 内容不能为空!
立刻说两句吧! 查看0条评论
精彩图集

赞助商链接