为什么Sleep()前后的InvalidateRect()没有起作用?如何解决?
可用分太多用不大掉的。(马上给分!)

解决方案 »

  1.   

    InvalidateRect只是增加重绘区域,在下次WM_PAINT的时候才生效
    也就是说在你Sleep的时候根本没有机会进行重绘
    试试将InvalidateRect后面增加SendMessage(WM_PAINT)试试看
      

  2.   

    楼上的原因是对的,不过
    还是把Sleep换成SetTimer吧。
    这样不会影响UI。
      

  3.   

    sleep后你的机器就不会进行任何的操作了。换其他的延时方法。
    SetTimer,或者下面的方法:
    http://community.csdn.net/Expert/FAQ/FAQ_Index.asp?id=195559
      

  4.   

    我的理解是:
    Sleep();是用来把你的CPU挂起的,可以用来和外设的通信
    当然你的InvalidateRect()没有作用了哦
      

  5.   

    还是把Sleep换成SetTimer
    然后在时间处理函数里面执行你的InvalidateRect().应该没有问题.
    而且Sleep()的意思是让CPU不在处理任何消息.而SetTimer的问题是每X秒执行一次.所以把
    还是把Sleep换成SetTimer
      

  6.   

    就是如此了,Sleep会阻塞UI的,尽量不要在主线程中使用