本帖最后由 VisualEleven 于 2012-10-18 09:49:56 编辑

解决方案 »

  1.   

    刷新太快了呀,你不加SLEEP的话,CPU有多快就执行多少次呀。
    可能1秒钟要画几万次,但是因为都是同一个数值。另外刷新几万次你都感觉不到的话,眼睛就坏掉了
      

  2.   

    SetDlgItemText(AfxGetMainWnd()->m_hWnd,IDC_TIME,strTime); //在控件中输出时间
    这个方法不安全,
    第二个
    程序更新的频率就是cpu的执行速度。数据一直在变化,
      

  3.   

    是的  cpu运行的速度太快了
      

  4.   

    上面几楼说的基本上是一个意思
    你也可以测试一下,自己写一个c语言程序,然后一个一个while(1)循环,看看cpu状态,它会霸占基本上100%,你想你一个数字闪几下还是在人眼的范围之类,其实不止闪了几下
      

  5.   

    上面几楼说的基本上是一个意思
    你也可以测试一下,自己写一个c语言程序,然后一个一个while(1)循环,看看cpu状态,它会霸占基本上100%,你想你一个数字闪几下还是在人眼的范围之类,其实不止闪了几下 
      

  6.   

    抛开你的设计问题不说(上面都说完了),我来解释一下为什么会闪:闪烁有几个条件:
    画面交替,且不相同的地方比较多;
    交替很快,但又不是非常快(快到眼睛看不出来);你的代码虽然有问题,但闪烁并不是刷新太快造成的,因为你的画面虽然交替,但绝大部分时候是完全相同的,真正闪烁的原因还是SetDlgItemText的时候,刷了背景,所以说,你是在不停的做如下循环:
    抹掉文字(显示背景色)
    显示文字如果你能不刷背景,那么你的代码是不会闪烁的,虽然你耗了几乎所有CPU资源,但与闪烁无关了。
      

  7.   

    你Sleep(1000);之后,其实还是闪烁的,但因为太慢,感觉不出来。不满足上面的条件2。
      

  8.   


    yang79tao前辈,你说楼主的帖子里有条件2,我怎么没看到?
    抛开你的回复,楼主闪烁的原因,就是setdlgitemtext 导致的。改成:Sleep(0)吧
    触发操作系统重新进行一次cpu竞争