想要在LISTCTRL某一列上动态生成进度条,而且进度条上又可以实时地显示进度信息,从网上找了好多例子, 但是没有一个合适的。后来自己对一个网上的类进行修改,终于可以动态生成progress ctrl了。
1.刚开始,为了空间复杂度的考虑,只定义了个指针,用new堆生成一个变量,然后放到listctrl上, 可是程序运行起来,进度条根本没有显示出来,后来仔细一想,这就是堆和栈变量的区别了,在初始化函数完成后,堆变量的作用生命也就结束了,当然不显示,没办法,只好用了栈变量。
2.之后的问题如江水一般而来,由于进度条动态生成,相当于漂浮在listctrl上,那么在窗口size变化或者listctrl的滚动条变化时候,必须要重载onsize函数来movewindow。对于listctrl的垂直滚动条,大家要注意, 当顶上的item被拉到header上面时,这个时候movewindow的位置一定要注意,因为header是不包括在listctrl的客户区,如果你movewindow到 header的区域,会把标题列覆盖,最好的办法就是判断item的top是否小于header的bottom,如果是,而什么也不做,也就是不显示该item了;否则就移动窗口
3对于水平滚动条,原理如2,但是要响应listctrl的滚动条的消息,一定要重载listctrl类才可以,在重载类里进行消息影射。
4.添加窗口类的hscroll,vscroll响应消息
问题:1。选种的item在改变时,有轻微闪烁
2.ietm选择变化时,背景色恢复有半秒的延迟,还没有好的办法解决。
发上截图