我想实现这样一个功能,在listctrl里面改变字的颜色,但是不是一开始就改变的,符合某个条件在改变.例如屏幕有3行.每行都是红色的,我想加个按钮,当按钮后每行都变成蓝色的,请问如何实现啊?我是个棒槌,不太明白,我看见有的帖子说修改drawtiem,但是如何修改啊?是继承一个新的函数么?我不太明白,请您指点,还有我看到下个网站关于介绍:
http://www.codeproject.com/listctrl/lvcustomdraw.asp
第一个例子.
这个例子我弄上来了,颜色改变了,但是那是一开机自动变色的,如何实现按按钮在换一次啊.这个例子是在消息映射的时候加的函数,如何实现按钮按一下自动在执行一次消息映射的部分呢?或者我想的是错的,用别的方法也可以实现.请您指教.麻烦您写下相关代码,越简单越好.非常感谢!!!!!!!!!!!!!!!
http://www.codeproject.com/listctrl/lvcustomdraw.asp
第一个例子.
这个例子我弄上来了,颜色改变了,但是那是一开机自动变色的,如何实现按按钮在换一次啊.这个例子是在消息映射的时候加的函数,如何实现按钮按一下自动在执行一次消息映射的部分呢?或者我想的是错的,用别的方法也可以实现.请您指教.麻烦您写下相关代码,越简单越好.非常感谢!!!!!!!!!!!!!!!
自己实现一个item的显示,包括绘制文本,绘制需要的各种image,并根据状态和风格设置选中背景等。
如果需要改变文本的颜色,可以在listctrl或者listview的派生类中,增加一个私有变量来表示颜色,在drawitem中,根据该变量的取值,使用CDC对象的SetTextColor进行设置,而后调用drawtext时应该就会是你希望显示的颜色了。
但是当你想改变列表中所有行的文本颜色和背景颜色,上述做法把容易问题搞复杂了:
对于老兄的问题,三个函数不是同样可以解决吗?
CListCtrl::SetTextColor
CListCtrl::SetTextBkColor
CListCtrl::SetBkColor
重载drawitem函数的例子很多。处理按钮消息,设定表示颜色的内部变量,而后要求重绘某一个item,就可以乐。