最简单建立一个对华框程序,在OnButton1中加入如下代码:
    CPaintDC dc(this);
CPen BlackPen(PS_SOLID, 1, RGB(255, 0, 0));
CPen* pOldPen = dc.SelectObject(&BlackPen);
dc.MoveTo(40, 50);
dc.LineTo(40, 70);
dc.SelectObject(pOldPen);
  为什么画不出来?

解决方案 »

  1.   

    画完后更新一下窗口试试。
    UpDateWindow();
      

  2.   

    你需要在鼠标消息里面记录鼠标的位置,然后再OnPaint 里面根据记录的数据进行绘制
    ============================================================================
    http://www.betajin.com/alphasun/index.htm
    DocWizard C++程序文档自动生成工具 | Wave OpenGL | HttpProxy | AjaxParser词法分析
      

  3.   

    lingfeng8888(棱枫) :UpDateWindow();不行,OnPaint()也不行
     alphapaopao(炮炮) :不用吧,我只是随便画一条线而已
      

  4.   

    在OnButton1中
    CDC *pdc;
    pdc = GetWindowDC();        CPen BlackPen(PS_SOLID, 10, RGB(255, 0, 0));
    CPen* pOldPen = pdc->SelectObject(&BlackPen);
    pdc->MoveTo(40, 50);
    pdc->LineTo(140, 70);
    pdc->SelectObject(pOldPen);
      

  5.   

    只要将 CPaintDC dc(this);改为
            CDC * dc = GetDC();
    然后将下面的.符号相应改为->即可。啊!楼上的已经说好了。
      

  6.   

    我用了 Invalidate()就可以了,为什么呢?
      

  7.   

    CPaintDC只能在OnPaint或OnDraw函数用使用。参看MSDN,
    改为楼上的方法,或将CPaintDC改为CClientDC
      

  8.   

    头陀很久不来了!
    这个问题是由于对话矿缺省窗口绘画过程造成的。你可以去掉ONPAINT中的CDialog::OnPaint();看看。
      

  9.   

    同意yndfcd(YNDFCD)CPaintDC只能在OnPaint或OnDraw函数用使用。参看MSDN,
    改为楼上的方法,或将CPaintDC改为CClientDC
      

  10.   

    原因是因为:CPAINTDC是调用了:BEGINPAINT函数从而导致默认绘画过程的调用的
      

  11.   

    我用了 Invalidate()就可以了,为什么呢?是因为Invalidate()使窗口无效,
    而CPAINTDC是调用了:BEGINPAINT函数有使窗口有效(并不一定是这个样子,
    个人理解)。这样你在画就可以了!