ListCtrl中使用排序为什么只对第一列有效,要实现第二列的排序必须重新编程别无它法吗?

解决方案 »

  1.   

    考虑到现在的CPU速度,写个最苯的排序即可,不用再这上花时间。
      

  2.   

    有个老兄说可以把子项的lpszText设置为TEXT_CALLBACK,再自己写排序代码,谁知道有什么作用,怎么我用MSDN搜索不到TEXT_CALLBACK了?
      

  3.   

    ListCtrl就对于排序有一个有效的支持了,可以看看MSDN CListCtrl的class members里的说明。
    通过调用 SortItems()函数,就可以达到对任意一列进行排序了,函数里有一个
    PFNLVCOMPARE 参数是
    int CALLBACK CompareFunc(LPARAM lParam1, LPARAM lParam2, 
       LPARAM lParamSort);形式的函数地址,使用这个自定义的函数,可以根据CListCtrl各个Item的dwData值进行两个两item排库,返回值小于0则lParam1对应的item在lParam2的item之前,大于0则反之,等于0由系统决定。可以响应LVN_COLUMNCLICK消息对不同的列进行排序