想从ClistCtrl派生一个新类,实现隐藏列
目前有两种思路,一个是设置列宽为0,一个是记录隐藏的列信息两种思路都有问题:
1 设置列宽为0
  如果设置了列宽为0,那么还需要忽略掉HDN_BEGINTRACK(A/W)通知,来锁定隐藏的列,不让他拖动,看上去似乎没问题。
  首先,有点小瑕疵,当鼠标放在那个隐藏列的上面时,由于屏蔽了拖动,导致用起来和普通的CListCtrl有差别(有时拖不动,或者在该显示拖动鼠标的时候没有显示)。
  其次,当若干个列被拖成列宽为0,并且和我们隐藏的列重合时,都拖不出来了!
  所以,这种被很多人推荐的方法不好!2 记录隐藏列信息
  当恢复的时候,需要插入一个新列,并且重新设置他们的text,考虑到排序,需要将这些text与一行绑定,现在的问题是:如何唯一确定一行?  我始终找不到一个比较好的方案。希望高手赐教!!!

解决方案 »

  1.   

    如果想隐藏简单的整数,可以使用SetItemData函数保存和读取隐藏列。
    如果想更加复杂的保存,我一般写一个链表用来保存完整的list。在程序上同时维护List和
    链表。保证链表和list的统一。
      

  2.   

    恩,感谢楼上
    这样肯定是可以的,但实现很烦琐,也容易出错看来没有什么简单的方法,感觉windows的这个List View有些呆板,导致一些常用的功能实现起来较麻烦。还是希望有高手想出简单的方法~~~~
      

  3.   

    要想随心所欲使用控制list,那就自己写一个继承类。逐渐完善这个类。