请大家看清我的描述,不要看到闪烁就回复 双缓冲,clip children,OnEraseBkGround。我的程序中 对话框属性 有 clip children,clip siblings,对话框中有一个static控件,这个static控件是从codeproject上找的透明static类继承过来的。问题是每次把对话框拖到屏幕外再拖进来,static好像没有重绘(上面的字被覆盖了),于是我想在对话框的onpaint()里加上static.invalidate()来刷新这个static,但是这样闪烁的厉害,如何解决?
请亮剑

解决方案 »

  1.   

    static.invalidate()
    不要放在onpaint()内,这样会造成刷新界面循环,当然一直在闪烁了。
    你放在OnMove,或者OnMoving内调用static.invalidate(),如果没有看到WM_MOVE,WM_MOVING消息重载入口,修改你的消息过滤为Window
      

  2.   

    不要放在onpaint内,你可以用invalidaterect 只刷新一个rect
    如果上面的还不行,你可以用双缓存技术实现
      

  3.   

    可能是做透明的方法有点问题吧,我遇到过类似的情形,不过是Edit,因为我没做特殊处理,Edit一般不需要透明,Static和Button透明过但是没有出现你你说的那种情况
      

  4.   

    不要放到OnPaint()里, 放到窗口的WM_MOVE里
      

  5.   


    那放在哪里什么时候刷新呢。OnMove? 如果不是移动该窗体而是有别的窗体在该窗体上移动呢
      

  6.   


    OnMove? 如果不是移动该窗体而是有别的窗体在该窗体上移动呢
      

  7.   

    能不能给个static透明的例子,谢谢 了。