注册 登录
编程论坛 VC++/MFC

求一个随鼠标可以移动的直线(VC++)

a315010225 发布于 2011-01-06 17:40, 1160 次点击
急急急!
6 回复
#2
shafeilong2011-01-06 18:24
LineTo
#3
vandychan2011-01-06 19:56
LineTo
#4
a3150102252011-01-07 13:08
但是还是要擦除上一次画的线 最好能给段代码
#5
2011-01-10 17:55
大概就是Down的时候记录开始点  然后Move的时候  就记录结束点    Up的时候也记录结束点   

在Move和Up记录完结束点  都调用InvalidateRect(NULL, FALSE);使窗口无效   然后就可以在Pain消息里画了

画的方法也简单  直接用MoveTo(开始点), LineTo(结束点)

#6
yuccn2011-01-10 22:48
一个随鼠标可以移动的直线,这个说的有点笼统了吧,如果只是要实现这个效果,可以在一个控件(比如CStatic等控件都行)里面画一条直线,这个控件在对话框里面显示。然后响应一下对话框的OnMouseMove和OnLButtonDown和OnLButtonUp事件,在事件中实现控件的移动就行了。。
说到这样,如果还不明白,哪么你真的要好好补一下基础的东西了
#7
a3150102252011-01-12 09:40
谢谢了 我弄出来了 在OnMouseMove中加入
if(m_flag==1)
            {
                CPen     newPen1(PS_SOLID,   0,RGB(255,0,0));
                CPen   *   pOldPen1   =   m_Pdc->SelectObject(&newPen1);
                int   nOldMode1;
                nOldMode1   =   m_Pdc->SetROP2(R2_NOTXORPEN);
                m_Pdc->MoveTo(0,oldbegin);
                m_Pdc->LineTo(rc.Width() ,oldbegin);
               
                m_Pdc->SetROP2(nOldMode1);
                m_Pdc->SelectObject(pOldPen1);
                oldbegin=point.y;
                m_flag=0;
            }
            
            if(m_flag==0)
            {
                CPen     newPen(PS_SOLID,   0,RGB(255,0,0));
                CPen   *   pOldPen   =   m_Pdc->SelectObject(&newPen);
                int   nOldMode;
                nOldMode   =   m_Pdc->SetROP2(R2_NOTXORPEN);
                m_Pdc->MoveTo(0,oldbegin);
                m_Pdc->LineTo(rc.Width() ,oldbegin);
                m_Pdc->SetROP2(nOldMode);
                m_Pdc->SelectObject(pOldPen);
                m_flag=1;
            }
1