以下是我的代码,功能是点一下表头就会排序,但是我点击后排序是乱的,貌似只能排2个,怎样改才能排3个或着多个(我是以第一列排序的)
我不是用数据库做,信息都保存到txt文件里,比较急,希望能把代码写上来,谢谢!BOOL CListCtrl::SortItems( PFNLVCOMPARE pfnCompare, DWORD dwData);int CALLBACK ListCompare(LPARAM lParam1, LPARAM lParam2,  LPARAM lParamSort);static int CALLBACK MyCompareProc(LPARAM lParam1, LPARAM lParam2, LPARAM lParamSort)

// lParamSort contains a pointer to the list view control. 
// The lParam of an item is just its index. 
//以第一列为根据排序 
CListCtrl* pListCtrl = (CListCtrl*) lParamSort; 
CString strItem1 = pListCtrl->GetItemText(lParam1, 0); 
CString strItem2 = pListCtrl->GetItemText(lParam2, 0); //比较两个数 
LPCTSTR s1=(LPCTSTR)strItem1; 
LPCTSTR s2=(LPCTSTR)strItem2; 
int n1=atoi(s1); 
int n2=atoi(s2);if (n1>n2) 
return -1; 
else
return 1;

void MyDlgModify::OnColumnclickList1(NMHDR* pNMHDR, LRESULT* pResult) 
{
NM_LISTVIEW* pNMListView = (NM_LISTVIEW*)pNMHDR;
// TODO: Add your control notification handler code here
m_list1.SortItems( MyCompareProc, (DWORD)&m_list1 );
*pResult = 0;
}

解决方案 »

  1.   

     CListCtrl::SortItems的用法 .  
      

  2.   

    Example
    // Sort the item in reverse alphabetical order.
    static int CALLBACK 
    MyCompareProc(LPARAM lParam1, LPARAM lParam2, LPARAM lParamSort)
    {
      // lParamSort contains a pointer to the list view control.
      // The lParam of an item is just its index.
      CListCtrl* pListCtrl = (CListCtrl*) lParamSort;
      CString    strItem1 = pListCtrl->GetItemText(lParam1, 0);
      CString    strItem2 = pListCtrl->GetItemText(lParam2, 0);  return strcmp(strItem2, strItem1);
    }void snip_CListCtrl_SortItems()
    {
      // The pointer to my list view control.
      CListCtrl* pmyListCtrl;  // Sort the list view items using my callback procedure.
      pmyListCtrl->SortItems(MyCompareProc, (LPARAM) pmyListCtrl);
    }MSDN的例子,可以参考一下
      

  3.   

    CListCtrl::SortItems 排序回调函数 int CALLBACK CompareFunc(LPARAM lParam1, LPARAM lParam2, LPARAM lParamSort);中用的lParam1 和 lParam2 来自两个比较行的 LVITEM::lParam因此在插入行的时候 把lParam的数值设置为行数
    或者 CListCtrl::SetItemData(nItem, nItem) 设置lParam值
    你上面的排序就可以用了