需要实时的描画出一些信息不知道用什么方法好,是用OnPaint消息函数还是专门一个线程呢?现在用的是OnPaint,但是数据显示不更新。也不知道什么原因。所以现在想改为线程。
大家给我点提示和建议!谢了

解决方案 »

  1.   

    OnPaint不可以。要完全理解OnPaint的意思。它是在你需要的时候才触发,所以显示不更新。
    线程里做是最好了,注意线程数据安全性。
      

  2.   

    说的好啊!哥们够意思!我倒是不是特别了解OnPaint.那就用线程了!我在听听别人的,一会就接贴
      

  3.   


    不结贴也没事,习惯了。。
    如果觉得线程麻烦,,可以做在WM_TIMER里
      

  4.   

    谁说OnPaint不可以啊,如果在线程里做的话,最小化之后,画的东西就没了.
    实时画图的话,当有新数据来时,要用Invalidate更新.
      

  5.   

    对,我碰到过这种问题,在OnPaint里画图有时候就是没效果,界面来不及刷新,还是试着用另一个线程。你在主界面显示以后,再开一个线程,把画图和更新数据都放到这个线程里,把你所属的这个类的this指针当成参数传给新线程,这样在新线程里就可以使用这个类的成员了。这样的话,虽然画图和更新数据还在一个线程里,但和主界面分开了,可以防止界面刷新不过来,还可以避免使用互斥和临界资源等方法保护数据,没那么复杂。
      

  6.   

    肯定是在OnPaint中画啊
    不然怎么画
    需要解决的是如何更新数据的问题
      

  7.   

    OnPaint不要把简单的问题复杂化
      

  8.   

    线程不好弄啊,在试试用OnPaint,是不是再用Invalidate就能实时刷新数据?
      

  9.   

    如果不用线程, 那数据如何保护?在OnPaint里也可以用互斥什么的吗?
      

  10.   

    哦,明白一些。就比如更新显示GPS模块接收过来的信息,把他解析后的数据实时显示,用OnPaint就行呗?
      

  11.   

    如果要画出来肯定是OnPaint里啊
    如果就是要现实字符串那直接更新edit就行了
      

  12.   


    对的,OnPaint能解决绝大多数这种显示问题,你可以先尝试一下,能行最好,就不用复杂化了;但有时候界面显示不过来,即使使用了Invalidate函数也不行的话,就有可能是单线程堵塞了,界面刷新不过来,那时再试试用线程来做