本帖最后由 td1442911376 于 2013-02-27 22:05:19 编辑

解决方案 »

  1.   


    OnPaint()
    CDC *pDC =GetDC();
        CBrush brushColor(RGB(255,255,0));//填充的颜色
        CPen penColor;
        penColor.CreatePen(PS_SOLID,1,RGB(0,64,128));//边框颜色
        pDC->SelectObject(penColor);
        pDC->SelectObject(brushColor);
     
        OnKeyDown(UINT nChar, UINT nRepCnt, UINT nFlags) 
    CPoint p(b.x,b.y);
    myEllipse(pDC,p,r);
        brushColor.DeleteObject();
       penColor.DeleteObject();
      ReleaseDC(pDC);
    myEllipse(pDC,p,r);void myEllipse(CDC *dc, POINT ptCenter, UINT uRadius)
    {
    POINT ptLeftTop, ptRightBottom;
     
    ptLeftTop.x = ptCenter.x - uRadius;
    ptLeftTop.y = ptCenter.y - uRadius;
    ptRightBottom.x = ptCenter.x + uRadius;
    ptRightBottom.y = ptCenter.y + uRadius;
     
    Ellipse(*dc, ptLeftTop.x, ptLeftTop.y,
    ptRightBottom.x, ptRightBottom.y);
    }void CDRAWDlg::OnKeyDown(UINT nChar, UINT nRepCnt, UINT nFlags) 
    {
        // TODO: Add your message handler code here and/or call default
         
        CDialog::OnKeyDown(nChar, nRepCnt, nFlags);
     
      switch(nChar)
     
           {
     
           case VK_LEFT://按下左键
     
                  b.x=b.x-10;
                  
    UpdateWindow();
     
                  break;    
     
           case VK_RIGHT://按下右键
                   b.x=b.x+10;
                UpdateWindow();
     
                  break;
     
           case VK_UP://按下上键
     
                   b.y=b.y+10;
    UpdateWindow();
     
                  break;
     
           case VK_DOWN:// 按下下键
     
                  b.y=b.y-10;
    UpdateWindow();
     
                  break;
     
           default:
     
                  break;
     
           }
     
    }
      

  2.   

    int nPosX,nPosY;
    void CCMoveBallView::OnDraw(CDC* pDC)
    {
    CCMoveBallDoc* pDoc = GetDocument();
    ASSERT_VALID(pDoc);
    if (!pDoc)
    return;

    CBrush bush(RGB(255,0,0));
    pDC->SelectObject(bush);
    CPen pen(PS_SOLID,2,RGB(255,0,0));
    pDC->SelectObject(pen);
    pDC->Ellipse(CRect(nPosX,nPosY,nPosX+20,nPosY+20));
    }void CCMoveBallView::OnKeyDown(UINT nChar, UINT nRepCnt, UINT nFlags)
    {
    switch(nChar)
    {
    case VK_UP:
     nPosY -=10;
     break;
    case VK_DOWN:
     nPosY +=10;
     break;
    case VK_LEFT:
    nPosX -=10;
     break;
    case VK_RIGHT:
    nPosX +=10;
    break;
    }
    this->Invalidate(); CView::OnKeyDown(nChar, nRepCnt, nFlags);
    }这个是在当文档中实现的你可以参考!!
      

  3.   

    UpdateWindow 是你自己写的?