我使用List Control显示数据(CListCtrl),但是其中有些列我不想显示
所以我就把他们的宽度设置为0,比如:
m_MyListCtrl.InsertColumn(8, _T("列名1"), LVCFMT_LEFT, 0);
但是问题是:只要有耐心,还是可以把这些‘隐藏’的列给拖出来的,
我想问:如何让这些隐藏的列真正的隐藏,让别人拖不出来???谢谢各位:)

解决方案 »

  1.   

    有没有改变column宽度的消息?
      

  2.   

    派生CHeaderCtrl,处理HDN_BEGINTRACK及HDN_ITEMCHANGING消息
    测试程序
    http://my.6to23.com/cigarette/lvh2.zip
      

  3.   

    派生CHeaderCtrl,处理HDN_BEGINTRACK及HDN_ITEMCHANGING消息
    测试程序
    http://my.6to23.com/cigarette/lvh2.zip
      

  4.   

    派生CHeaderCtrl,处理HDN_BEGINTRACK及HDN_ITEMCHANGING消息
    测试程序
    http://my.6to23.com/cigarette/lvh2.zip
      

  5.   

    to: bcpl(林平之,感冒中..) 
    你发的例子我看了,好像是可以,但是我不太懂原理是什么,可否解释一下
    比如:
    为什么要搞一个CMyHeader?
    在实例程序中的按钮事件中m_header.m_list.RemoveAt(m_header.m_list.Find(1));
    是干什么用的。
    总之越详细越好,谢谢了,我是个新手,提拔提拔吧:)to: yushulei(永远) 
    我的这List Control里的数据是从服务器的多个表里取来的,并组合在一起,
    内存中当然有了,但是都是些松散的结构,没有放在一起,所以用起来不方便
      

  6.   

    ListCtrl是一个组合控件,在报表模式下的列头本身是一个HeaderCtrl,
    在拖动列头改变列大小的时候会HeaderCtrl会发送
    HDN_BEGINTRACK及HDN_ITEMCHANGING通知消息给你,让你有机会决定让不让它改变
    CMyHeader由CHeaderCtrl派生,用于处理这些消息
      

  7.   

    我的例子中用了一个CList来存放禁止拖动的列,m_header.m_list.RemoveAt(m_header.m_list.Find(1));
    就是把第二列从列表中删除,以便让它恢复拖动