在view中设置了一个计时器,作用是每隔一端时间来重新获得画图的数据,每次调用ONDRAW函数,现在的问题是:
画面上有标题等不需要每次都重画的部分,应该怎么样设置才能使只重画我指定的区域呢?
谢谢!
如果说的不清楚,请问先!

解决方案 »

  1.   

    InvalidateRect(...)?
    自己计算需要重绘的RECT区域不就行了吗?
      

  2.   

    对,使用无效矩形。
    先设置无效区域:RECT rect;
    然后在OnDraw函数中做参数调用InvalidateRect()函数,即可。
      

  3.   

    不是在ondraw中调用吧
    看什么时候数据变化,就相应的重绘view
      

  4.   

    我现在的OnTimer的函数是这样的:
    void CMDITestView::OnTimer(UINT nIDEvent) 
    {
    // TODO: Add your message handler code here and/or call default
    CMDITestDoc* pDoc = GetDocument();
    pDoc->OnTimer();//是取数据的函数
    Invalidate(FALSE);

    CView::OnTimer(nIDEvent);
    }
    具体应该怎么办呢?
      

  5.   

    先定义你要重绘的区域,即填充一个RECT结构(假设声明为 rect),然后调用
    InvalidateRect(rect)来使这个区域无效,从而引发重绘该区域.
      

  6.   

    计算出需要重绘的rect,不必重绘。把重绘数据写入档,把需要重绘区域用InvalidateRect加入。把重绘数据写入档
      

  7.   

    对,我说错了,不是在OnDraw中调用,是在你想要刷新的时候调用InvalidateRect()函数,强迫调用OnDraw函数刷新参数指定的矩形区域。
      

  8.   

    代码举例:void C..::OnTimer(...)
    {
       CRect rect(/*要刷新的区域矩形的初始化数据*/);
       InvalidateRect(rect);
       ...
    }OnDraw函数中该怎么画怎么画。