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

解决方案 »

  1.   

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

  2.   

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

  3.   

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

  4.   

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

  5.   

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

  6.   

    不知下面的窗口能否满足楼主的要求。供参考。在MFC中实现平面滚动条(VC++) 
    http://www.softist.com/programemo/flat-scrollbar/flat-scrollbar.htm