我建立了一个基于对话框的应用程序,在它的OnPaint()中我加入如下代码        CPaintDC dc(this);
CRect rc;
GetClientRect(&rc);
dc.Ellipse(rc);
Invalidate(TRUE);
    UpdateWindow();
为什么运行后看不到画的椭圆?很菜的问题,各位大侠不要用桔子皮砸我呀!
谢谢!

解决方案 »

  1.   

    我建立的是基于对话框的工程,能重载ondraw()么?
      

  2.   

    去掉Invalidate(TRUE);触发不了Onpaint()
      

  3.   

    去掉Invalidate(true)放到这里可定不对,设置一下你的对话框属性
      

  4.   

    你的代码应该是没有问题的呀!可以run呀!不知是不是你的机器有毛病??
      

  5.   

    我建立的是基于对话框的工程,能重载ondraw()么?
    在ONPAINT()中可以调用ONDRAW()么?怎么使用?
      

  6.   

    CDC *pDC = GetDC();
    CRect rc;
    GetClientRect(&rc);
    pDC->Ellipse(&rc);
      

  7.   


    Invalidate(TRUE);//整个客户区都被标记为无效, bErase=TRUE 下一次重绘时就会擦掉全部窗体,重画;
    UpdateWindow();  //向窗体发送一条WM_PAINT消息
    这里是重画窗体,那么已经把图形画出来了,再去让窗体重画,会将画的部分擦掉。
    如果是在OnPaint里,岂不要窗体不停地重绘?
      

  8.   

    你的程序死循环了
    Invalidate(TRUE);
        UpdateWindow();
    这两句话会调用OnPaint()函数 
    删掉
      

  9.   

    CDlg::OnPaint() 
    {
    CPaintDC dc(this)
    CRect rc;
    GetClientRect(&rc);
    dc.Ellipse(rc);
    }