CScrollBar 背景色 改变

时间:2023-02-04 19:20:30
为什么在窗口中直接添加的滚动条控件能够在OnCtlColor函数中改变背景色,而创建窗口时使用属性WS_VSCROLL生成的滚动条却改变不了。。。如何改变其背景色。。。

9 个解决方案

#1


内置的滚动条不好重画的,
hookapi才行

#2


能不能详细点,给出问题解决的详细步骤。。。

#3


能不能详细点,给出问题解决的详细步骤。。。

#4


去掉WS_VSCROLL属性,自己创建一个ScrollBar把它MoveWindow到底部,然后让ScrollBar的任何动作去将窗口SetSCrollPos
总之就是用自己创建的滚动条去替代窗口自身的

#5


如果可以这样的话我早这样做了,就是自己画一个滚动条也不是难事,但是比如CListBox,CListCtrl,CTreeCtrl等等滚动条怎么办,我都要自己处理吗?

#6


其实用一楼的方法也可以,不过那样就相当于是做皮肤了,不比自己画几个滚动条轻松
另外你可以自己派生一个ScrollBar,将它需要和控件交互操作的额外代码、自身位置定位、颜色设定都写在派生类里,每个需要它的控件都挂上去,比做皮肤轻松,不过是重复劳动罢了,另外如果你的CListBox,CListCtrl,CTreeCtrl等Ctrl比较多,一样可以和你派生的ScrollBar集成到一起的,你会省很多事

#7


楼主最好还是用hook吧,自己绘制还需要处理滚动相关消息,这个比较多呀。

#9


hook?一般什么时候用这个呢

#1


内置的滚动条不好重画的,
hookapi才行

#2


能不能详细点,给出问题解决的详细步骤。。。

#3


能不能详细点,给出问题解决的详细步骤。。。

#4


去掉WS_VSCROLL属性,自己创建一个ScrollBar把它MoveWindow到底部,然后让ScrollBar的任何动作去将窗口SetSCrollPos
总之就是用自己创建的滚动条去替代窗口自身的

#5


如果可以这样的话我早这样做了,就是自己画一个滚动条也不是难事,但是比如CListBox,CListCtrl,CTreeCtrl等等滚动条怎么办,我都要自己处理吗?

#6


其实用一楼的方法也可以,不过那样就相当于是做皮肤了,不比自己画几个滚动条轻松
另外你可以自己派生一个ScrollBar,将它需要和控件交互操作的额外代码、自身位置定位、颜色设定都写在派生类里,每个需要它的控件都挂上去,比做皮肤轻松,不过是重复劳动罢了,另外如果你的CListBox,CListCtrl,CTreeCtrl等Ctrl比较多,一样可以和你派生的ScrollBar集成到一起的,你会省很多事

#7


楼主最好还是用hook吧,自己绘制还需要处理滚动相关消息,这个比较多呀。

#8


#9


hook?一般什么时候用这个呢