a.  新建工程1_1,选择单文档,完成。b.  在view类加变量int ituxing,并在构造函数里赋值为ituxing=0;c.  在OnDraw(CDC* pDC)函数上添上以下语句:  void CMy1_1View::OnDraw(CDC* pDC){    CMy1_1Doc* pDoc = GetDocument();    ASSERT_VALID(pDoc);    // TODO: add draw code for native data here  //清除当前图形    CBrush mybrush1;    mybrush1.CreateSolidBrush(RGB(255,255,255));    CRect myrect1(0,0,1024,768);    pDC->FillRect(myrect1,&mybrush1);    //判断当前图形ituxing    if(ituxing==1)  //ituxing=1,画矩形           pDC->Rectangle(20,20,89,89);    else if(ituxing==2)    //ituxing=2,画圆            pDC->Ellipse(20,20,89,89);        else    //否则,画三角形           {                  pDC->MoveTo(20,20);                  pDC->LineTo(89,45);               pDC->LineTo(20,89);                  pDC->LineTo(20,20);           }}d.  添加OnTimer(UINT nIDEvent)和OnCreate(LPCREATESTRUCT lpCreateStruct),并加上语句如下:   void CMy1_1View::OnTimer(UINT nIDEvent) {        // TODO: Add your message handler code here and/or call default     //获取指针pdc     CDC *pDC=GetDC();     //调用OnDraw(pDC)重画     OnDraw(pDC);     //使ituxing循环     ituxing=(ituxing+1)%3;      CView::OnTimer(nIDEvent);} int CMy1_1View::OnCreate(LPCREATESTRUCT lpCreateStruct) {     if (CView::OnCreate(lpCreateStruct) == -1)            return -1;
     // TODO: Add your specialized creation code here     //设置更新时间     SetTimer(1, 750, NULL);     return 0;}e.  完成。以上代码是要用定时器实现正方形-三角形-圆形之间的动画变换,但不知哪里错了动画不会动。望高手解答

解决方案 »

  1.   

    void CMy1_1View::OnTimer(UINT nIDEvent)  写得有问题,OnDraw一般是由框架自己调用的。
    改成这样:
    void CMy1_1View::OnTimer(UINT nIDEvent)  {  ituxing=(ituxing+1)%3;
      Invalidate();
      CView::OnTimer(nIDEvent);}
      

  2.   

    void CMy1_1View::OnTimer(UINT nIDEvent)  
    里面加判断
    if (nIDEvent==1)
    {
     ituxing=(ituxing+1)%3;
      Invalidate();
    }
      

  3.   

    OnTimer里修改变量的值以后强制刷新就可以了Invalidate/InvalidateRect()来刷新
      

  4.   

    自己掉OnDraw?
    用Invalid 发WM_PAINT 消息
      

  5.   


     void CMy1_1View::OnTimer(UINT nIDEvent)  {  // TODO: Add your message handler code here and/or call default  //获取指针pdc // CDC *pDC=GetDC();  //调用OnDraw(pDC)重画  //OnDraw(pDC);  //使ituxing循环 Invalidate(NULL);
      ituxing=(ituxing+1)%3;   CView::OnTimer(nIDEvent);}