我在单文档CView::Paint里画了169个小方框,然后用不同的颜色填充(CBrush),当我进行窗口切换时,小方框和颜色就会重新画一次,有时当鼠标移出当前窗口时,也会重新画一次,有没有办法在我程序启动时画一次,然后需要刷新时,我再手动刷新.最小化窗口到最大化窗口也不重画,行吗?

解决方案 »

  1.   

    可以啊,你在你的view里面加一个bool idrawflag,默认为true,在ondraw开始检查idrawflag是
    否为true,是则画,否则return;函数最后置为idrawflag=false; 然后在你手动刷新时先idrawflag=true就行了
      

  2.   

    利用位图保存起来,每次刷新只要把位图BitBlt上来就可以了。
      

  3.   

    用双缓冲。
    http://www.csdn.net/develop/Read_Article.asp?Id=26108要做到最大化不重画,用StretchBlt函数,不过显示效果不会很好,会有马赛克。
      

  4.   

    不知道你要做什么,不过一般贴图在最大化和最小化的时候我们都是要求刷新的,如果从最小化到最大化的时候不刷新,你的那些小方块不就没有了?
    刷新的一般做法是在OnPaint或OnDraw里把memDC中的图像拷贝到当前的设备DC中去,如果你真的不想刷新,只需要不在OnPaint里进行拷贝工作,在OnPaint之外把memDC考到设备DC里就行了。不过这样的图像在刷新一回之后就没有了。
    双缓冲是解决图像闪烁问题的,好像和你没什么关系。