我想让3个Slider分别控制颜色的红、绿、蓝值,然后在我拖动的时候,在对话框的示例框里面显示颜色样本,所以我在 Slider的NW_CustomDraw方法里面加入了Invalidate();然后在onpaint里面把示例区域用所选颜色填充,但是为什么我一打开对话框他就开始一直闪啊。肯定是Invalidate()一直被重复调用了,请问这是为什么啊?

解决方案 »

  1.   

    NW_CustomDraw里别加Invalidate要不一直重绘Slider
      

  2.   

    同上,不要把Invalidate放到NW_CustomDraw里去,那是该控件的重绘消息``
    建议楼主用SCROLLBAR``也挺不错啊``如果楼主坚决这样用Slider的话``也可以``在你的对话框定义三个变量,分别为nR,nG,nB,在程序初始化的时候,使他们的值与对应的三个Slider控件的值一样,然后在NW_CustomDraw里写,
    int nCurR = 0,nCurB = 0,nCurG = 0;
    nCurR = 对应控件当前的值
    nCurG = 对应控件当前的值
    nCurB = 对应控件当前的值
    然后判断是否与之前定义的nR,nG,nB相同,不同则重绘这样`就会弄到很闪的了