类是基于CScrollView,我在OnPaint()函数里面叫视图,显示若干小图片,
在onpaint()的关键语句如下:
bitmap.LoadBitmap(IDB_TB);
CBrush lbrush(&bitmap);
CBrush* pOldBrush=dc.SelectObject(&lbrush);
for(int i=0;i<4;i++)
    dc.PatBlt(x+i*100,y,x,y,PATCOPY);
for(i=0;i<5;i++)
    dc.PatBlt(x,y*3+i*100,x,y,PATCOPY);
,在移动的时候,闪烁很大,移动滚动条,就不能正常显示,,请问下,应该怎么改下???

解决方案 »

  1.   

    在滚动的消息函数,比如OnHScroll,里边UpdateWindow。
      

  2.   

    滚动的时候会自动刷新啊你试试在OnDraw里面绘制一般都在OnDraw里面绘图
      

  3.   

    我想绘制的图,是一屏显示不完的。所以要滚动,要重新处理坐标吗,,哪个怎么处理呀。在ondrow下也是一样有问题,滚动应该是屏幕下移,看到下面的图片,但是结果是图片和滚动条一块下移。是不是显示模式的问题
      

  4.   

    用这个函数,就不会处理那些东西了,不需要管坐标变换问题。m_hBitmap=(HBITMAP)LoadImage(NULL,lpszPathName, IMAGE_BITMAP, 0, 0, LR_LOADFROMFILE|LR_CREATEDIBSECTION);
      

  5.   

    在OnPaint里面的话,那你就在OnPaint函数的最后加上一句试试!Invalidate(FALSE)
      

  6.   

    但是结果是图片和滚动条一块下移.........
    =========================================
    这个在OnDraw下应该不会出现这种情况.在OnDraw(或OnPain)以外做图时.要加上滚动条位置的偏置方法如下:
    CPoint nowxy=this->GetScrollPosition();
    dc.PatBlt(x+i*100-nowxy.x,y-nowxy.y,x,y,PATCOPY); //减去...