各位大侠,能否帮忙!
 我的listcontrol中有三列:sender,time,phone
我想在listcontrol中根据给列排序例如相同的sender 的记录显示在一起这么搞啊!!
帮忙!!

解决方案 »

  1.   

    响应LVN_COLUMNCLICK消息.示例void ElseBusiness::OnColumnclickList(NMHDR* pNMHDR, LRESULT* pResult) 
    {
    NM_LISTVIEW* pNMListView = (NM_LISTVIEW*)pNMHDR;
    // TODO: Add your control notification handler code here
    if(!GetDlgItem(IDC_BUTTON2)->IsWindowEnabled())
    return;
    static int iSorted=-1;//逼?   
    static int iClass=0;
    //  if(pNMListView->iSubItem==iSorted)
    // return;   
    iSorted=pNMListView->iSubItem;
    for(int i=0;i<m_list1.GetItemCount();i++){
    m_list1.SetItemData(i,i);
    }
    Sort listsort;
    listsort.listctr=&m_list1;
    listsort.num=iSorted;
    listsort.iclass=iClass++%2;
    m_list1.SortItems((PFNLVCOMPARE)CompareFunc,(LPARAM)&listsort);
    *pResult = 0;
    }int CALLBACK ElseBusiness::CompareFunc(LPARAM lParam1,LPARAM lParam2,LPARAM lParamSort)   
    {   
    CString date1,date2;
    Sort *sort=(Sort *)lParamSort;
    date1=sort->listctr->GetItemText((int)lParam1,sort->num);
    date2=sort->listctr->GetItemText((int)lParam2,sort->num);
    if(sort->iclass==0)
    return(strcmp(date1,date2));//?狦?>0   =0   <0   
    else
    return (strcmp(date2,date1));
    }