我想实时的改变一个CListCtrl的列宽
调用CListCtrl的SetColumnWidth()方法比如:m_ctrTest.SetColumnWidth(1, 0);// 把第1列宽度设置为0然后调用CListCtrl的Invalidate()没有用:(
请问高手我该怎么做???(本人新手)

解决方案 »

  1.   

    你的CListCtrl的风格是否为ReportView风格,只有这种风格才可以设置列宽SetColumnWidth函数的第二个参数可以是
    LVSCW_AUTOSIZE或LVSCW_AUTOSIZE_USEHEADER
      

  2.   

    我发现了问题的根源了是,由于我把列宽的设置保存在文件中导致的首先程序启动时,我从文件中把设置列宽的数据读到内存中,设置列宽然后又一个Dialog用于设置新的列宽,设置完后,把设置保存到文件中,注意这时
    确实写到文件中了,我在程序外用Notepad打开看到的当设置列宽的Dialog关闭后,我如上所述重新读取配置文件,并设置列宽,可是我发现
    读取得数据还是老的数据,就是没有改变后的数据,这个和缓存有关系吗???
      

  3.   

    呵呵,你没看清楚,现在不是CListCtrl的问题了是文件读取得问题:)
      

  4.   

    楼主的代码在我的机子上调试通过啊~就是调用SetColumnWidth(),就可以了,好象不要Invalidate(),搂主的list样式有没有设对?
      

  5.   

    SetColumnWidth(nCol,nWidth)必须选择report样式
      

  6.   

    补充
    如果是list样式nCol = -1
      

  7.   

    我结了吧,我都说了,不是CListCtrl的问题可能我误导大家了:)