MoveTo(x, y);
LineTo(x, y);画线

解决方案 »

  1.   

    在OnMouseMove函数中一般的情况下是
    CDC ClientDC;
    ClientDC.SetROP2(R2_NOT);
    ClientDC.MoveTo(m_PointOrigin);
    ClientDC.LineTo(m_PointOld);
    ClientDC.MoveTo(m_PointOrigin);
    ClientDC.LineTo(m_PointCurrent);
    但请注意,我问的问题是:
    请问如何在一个有背景颜色的编辑框中,用鼠标输入一条指定颜色的直线? 
    这种情况就比上种情况复杂些,请各位告知解决方法
     
      

  2.   

    我想应该重载PreTranslateMessage(),在其中截获WM_MOUSEMOVE消息,然后得到对话框的DC,再进行画线操作。这只是一个思路,具体代码要你自己试验一下。
      

  3.   

    CPen pen;
    pen.CreatePen(SOLID_PEN,RGB(...),...);
    CPen* oldPen = pdc->SeleceObject(&pen);
    pdc->MoveTo(...);
    pdc->LineTo(...);
    pdc->SelectObject(oldPen);
      

  4.   

    哈哈,我已经解决了
    CDC ClientDC; 
    Pen.CreatePen(PS_SOLID,1,RGB(该值=指定颜色值异或背景颜色值));
    ClientDC.SelectObject(&Pen);
    ClientDC.SetROP2(R2_XORPEN);
    ClientDC.MoveTo(m_PointOrigin);
    ClientDC.LineTo(m_PointOld);
    ClientDC.MoveTo(m_PointOrigin);
    ClientDC.LineTo(m_PointCurrent);
      

  5.   

    原来你的背景颜色值是固定的,那就简单多了,我是指背景是图片或其他多色彩时用指定颜色画线,不过似乎可以参考鼠标在桌面移动所采取的方式。先把当前直线的宽度的CRect存储起来,再画线。