我在MFC的view类里写了一段代码
    CClientDC dc(this);
    CPen pen (PS_DASH,1, RGB (255, 0, 0)); 
    dc.SelectObject (&pen);
    CDC *pDC=GetDC();    CLine line;
    line.m_pt0=m_pt0;
    line.m_pt1=m_pt1;
    line.MouseMove(pDC,Flag,point);其中CLine是我自己建的类,MouseMove是里面的函数,具体函数如下
void CLine::MouseMove(CDC *pDC, UINT flag, CPoint point)
{
pDC->SetROP2(R2_MERGEPENNOT);
pDC->MoveTo(m_pt0);
pDC->LineTo(m_pt1);
pDC->MoveTo(m_pt0);
pDC->LineTo(point);
m_pt1=point;
}
运行时画笔还是默认的画笔,没有改变线型和颜色什么的
求高手指点

解决方案 »

  1.   

    dc.SelectObject (&pen);
    这里使用的是dcCDC *pDC=GetDC();
    line.MouseMove(pDC,Flag,point);
    可下面又用的是pDC,不是同一个DC啊,在pDC中你没有设置画笔,当然还是默认的画笔了
      

  2.   

    CDC *pDC=GetDC();这句是什么意思  我不太懂
    那应该怎么改呢
      

  3.   

     CClientDC dc(this);
      CPen pen (PS_DASH,1, RGB (255, 0, 0));  
      dc.SelectObject (&pen);  CLine line;
      line.m_pt0=m_pt0;
      line.m_pt1=m_pt1;
      line.MouseMove(&dc,Flag,point);改成这样试试
      

  4.   


    我的MouseMove的参数不能用dc  会报错不过我现在已经解决了   谢谢你了~~