想实现位图直线运动,但是位图不动啊。
我的步骤是:
在OnTimer()里改变坐标,并用InvalidateRect(&rect);UpdateWindow();强迫重绘(View类中的OnDraw被调用)。
在框架类的OnCreate中加SetTimer(0,300);
在View类的OnDraw里根据坐标变量进行绘图,代码如下
         CRect rect;
GetClientRect(&rect);
CBitmap bitmap;
bitmap.LoadBitmap(IDB_BITMAP1);
CDC dcCompatible;
dcCompatible.CreateCompatibleDC(pDC);
dcCompatible.SelectObject(&bitmap);
pDC->BitBlt(i,i,rect.Width(),rect.Height(),&dcCompatible,0,0,SRCCOPY);
dcCompatible.DeleteDC();
但就是不动啊,请指点,谢谢。

解决方案 »

  1.   

    在框架类的OnCreate中加SetTimer(0,300); 
    改view里面的OnInitialUpdate里面设置SetTimer(0,300); 
    试试!
      

  2.   

    pDC->BitBlt(i,i,rect.Width(),rect.Height(),&dcCompatible,0,0,SRCCOPY); 确定i值修改了吗?
      

  3.   

    一个看ondraw调用了没有,另一个看看i的值,另外你的好像没有擦除的部分,
      

  4.   

    谢谢1楼朋友,可以了。为什么框架类的OnCreate中加不对啊?还有怎么擦除啊?谢谢!
      

  5.   


    你在这个里面加的位置不对的话,可能你的窗口都还没创建。直接Invalidate(TRUE)不就擦出原有,再重绘了么如果你说的用户意义上的不要显示这幅图了,那么加个BOOL来控制要绘制撒。
      

  6.   

    就一次Create,自然不会再变化。
    Invalidate一刷新就变化了。在定时器中画是应该的