一个画图程序,从数据库中用odbc读出数据,根据数据画图,其中画图用到Invalidate()强制刷新,然后调on paint()画图,编译执行后程序画图正常(有闪动),但菜单按钮响应很慢,好象只有画图刷新时才闪动。
请问什么原因?如何解决?

解决方案 »

  1.   

    Invalidate()只是发出一个WM_PAINT消息,系统获取这个消息后才会调用OnPaint()或 OnDraw()函数。
    但我不清楚你这个程序的工作过程。请讲详细点。
    我手上也正做一个绘图软件。
      

  2.   

    画图时,调用Ontimer()从数据库中反复读取数据进一个固定数组,同时每读一个数据调用Invalidate(),这时程序会调用Onpaint()中写好的画图代码画图,画图时,界面会闪(没有平滑闪动),而程序菜单点击响应缓慢,好象只有刷新时(界面闪时)响应。
    不知如何解决
      

  3.   

    对了,其中在循环取数据中还用了Sleep()延迟
      

  4.   

    你每读一个数据变刷新一次当然很闪。
    定义一个数据结构如CArray或CTypePtrList保存你读入的数据。
    先一次性读完数据。
    从View中传一个pDC到你自己的函数中去,然后用你自己的函数根据数结构中的数据来绘图,便不会闪动。
    OnPaint()中也写绘图代码,用于刷新时。
    你的程序菜单我不知什么时候工作的,要看到你的东东或说清楚他的工作过程才知。