我在一个基于对话窗的程序中用了几个CDC的函数,有画线,画icon等。相应在OnPaint()中调用。但是在加入或删除东西(例如icon)时,总是不能自动更新。我就加入了RedrawWindow();OnPaint();两个函数。用来更新界面,多番尝试,二者缺一就达不到理想效果。但是又有一个问题,画面闪烁得很厉害!不知道大家用什么方法的。请指教。

解决方案 »

  1.   

    在你想更新的时候调用Invalidate(),应该可以更新你的图形!
      

  2.   

    InvalidataRect(CRect rect);
    更新你要刷新的区域,可以达到你的效果,由于更新的大小由rect大小来控制所以,当rect不太大时,就没有闪烁现象
      

  3.   

    画面闪烁可用如下方法解决:
    加入OnEraseBkgnd()函数,并修改其返回值为TRUE.
    BOOL T2_2::OnEraseBkgnd(CDC* pDC) 
    {
         return TRUE;
       //return CDialog::OnEraseBkgnd(pDC);}
      

  4.   

    在绘图结束后调用Invalidate()个更新整个客户区,调用InvalidataRect(CRect rect)更新指自定的区域,大小由你自己定。更据你自己的情况选择一个函数。
      

  5.   

    用Invalidate()更新整个区域
    用InvalidataRect(CRect rect)更新你指定的区域