具体是这样的,我用
CClientDc dc(this);
CClientDc pDc=&dc;
pDc->moveto(0,0);
pDc->LineTo(100,100);
画的线怎样在窗口重画后依旧显示,
用Invalidate(false);可以吗?
可以的话,写在哪里?

解决方案 »

  1.   

    把你的程序写到WM_PAINT这个消息函数中即可。
      

  2.   

    写在WM_PAINT消息函数中,在需要重画时调用Invalidate(NULL);
    另外你的代码写错了 , 应该是
    CClientDc dc(this);
    CClientDc *pDc=&dc; /// 漏了个"*", 呵呵 !
    pDc->moveto(0,0);
    pDc->LineTo(100,100);
      

  3.   

    要想在窗口中一直有显示的东东(最小化后再恢复仍然显示),则要画在OnDraw或者OnPaint中。建议你这样做:
    定义两个成员变量CPoint m_pt1,m_pt2用来记忆线段的起始点和结束点。
    在OnLButtonDown中记下起始点。在OnMouseMove中记下结束点,并且画出该线段(要想不闪烁需要光栅操作)。
    同时在OnDraw或者OnPaint中也根据两个点画出线段。这些是非常基本的思路和gdi的操作,建议看看vc基础书籍。