想实现功能当点击CListCtrl的某个Column栏时,希望对控件中的数据的按这一栏(根据自定义的协议)进行排序,要分得话可开其它号给分谢谢先

解决方案 »

  1.   

    ft
    怎么还到其他号给分阿?
    排序的话有人已经做好了。
    www.codeproject.com上有得,去看一下吧,我这里有源文件,但是,似乎太多了,就不贴了。
    http://www.codeproject.com/listctrl/sortlistctrl.asp
      

  2.   

    List控件有个函数,同时指定一个回调,就可以进行排序了。SortItem()好像是这个,例子MSDN上面有的
      

  3.   

    回:sakaer(sakaer) 
    那个我看了他好像是在已开始就把进入list的数据存起来了
    我的情况是list以就位,点击其头部某一行就对这一列排序。里面的数据已开始是未知的阿
      

  4.   

    回复人: yangyan_hit(菜鸟) ( ) 信誉:92  2005-09-29 16:31:00  得分: 0  
     
     
       回:sakaer(sakaer) 
    那个我看了他好像是在已开始就把进入list的数据存起来了
    我的情况是list以就位,点击其头部某一行就对这一列排序。里面的数据已开始是未知的阿
      
     真ft了,他程序里的那些数据是为了演示用的阿
    你可以自己随意添加各种数据的。
    你仔细看看他的源码,对各种数据的排序在类文件里都已经做过了的。
    添加完数据后点击每一列的头部就能对你添加的数据自动排序了的。
    下次先仔细看看人家的代码哦。不想新也可以自己添加一些数据测试一下么。。
      

  5.   

    在那ListCtrl的属性里,在Stytle的Sort那栏选择“NONE”看看
      

  6.   

    这是很彻底的解决方案:
    http://blog.csdn.net/coldcrane/archive/2005/07/03/411116.aspx
      

  7.   

    回:sakaer(sakaer)
    首先,它的代码不能用其基类的动态创建!
    其次,我相信我看清了代码!它的add函数在Insert数据进ListCtrl的同时把数据又都同时存进了他自己定义的结构体。排序的时候再调出来而已。
    不信的话你可以用其基类的Insert函数填写ListCtrl看在能不能排序!而要用它的做到对数据的即时提取再排序是不可能的!
      

  8.   

    回:coldcrane(清风明月)
    收到。
    其实我觉得不会排序大多数就是不知道那个CALLBACK 函数中 前两个参数的用法。
      

  9.   

    真正的难点在于ListCtrl与数据源的分离,你所说的只是一个小的技术细节而已。
      

  10.   

    好像无法分离阿。。
    插入头,插入数据后一定要用使用SetItemData来关联(associated)起来。没有这个排序一定会失败;而且插入的数据要分配一个内存区域来固定起来。因为每次重新排序时要的是原始的数据顺序。
      

  11.   

    我已经说过了,我写的CSortListCtrl是一个很彻底的解决方案,请看明白再发表意见
      

  12.   

    简单,继承一个CListCtrl ,编写一个两个子项比较排序的简单函数,响应OnCloumnClick事件即可。
      

  13.   

    我遇到得问题是CALLBACK  函数两个参数得到得值都为1,所以一调用就出现访问出错,该怎么改?我就是直接把类加到工程中,然后将自己得listctrl变量设置为继承得Sortlistctrl 变量,不是这样弄得吗?