永发信息网

如何在MFC中用鼠标画直线

答案:3  悬赏:40  手机版
解决时间 2021-04-07 04:57
如何在MFC中用鼠标画直线
最佳答案
OnLButtonDown(UINT nFlags, CPoint point)
{
::SetCursor(m_HCross);
m_Dragging=1;
m_PointOrigin=point;
m_PointOld=point;
SetCapture();
RECT Rect;
GetClientRect(&Rect);
ClientToScreen(&Rect);
::ClipCursor (&Rect);
CView::OnLButtonDown(nFlags, point);
}

OnMouseMove(UINT nFlags, CPoint point)
{
if(m_Dragging)
{
CClientDC dc(this);
dc.SetROP2 (R2_NOT);

dc.MoveTo (m_PointOrigin);
dc.LineTo (m_PointOld);
dc.MoveTo (m_PointOrigin);
dc.LineTo (point);
m_PointOld=point;
}

CView::OnMouseMove(nFlags, point);
}

OnLButtonUp(UINT nFlags, CPoint point)
{ CClientDC dc(this);

if(m_Dragging)
{
m_Dragging=0;
::ReleaseCapture ();
::ClipCursor (NULL);

dc.SetROP2 (R2_NOT);
dc.MoveTo (m_PointOrigin);
dc.LineTo (m_PointOld);
dc.MoveTo (m_PointOrigin);
dc.LineTo (point);
m_PointOld=point;

}

CView::OnLButtonUp(nFlags, point);
}
全部回答
用鼠标划线,用Device context ,即设备上下文,用来在画布上划线和作图的。里面有很多工具,自己去查资料吧。用moveto(x,y)和Lineto(x,y);函数就可以了。
用鼠标控制也可以实现,也就是在mousemove中加点代码,让线随着鼠标做运动。动脑子好好想想吧,代码就不贴了。好久没用过VC了,呵呵
首先通过鼠标左键按下和鼠标左键弹起消息捕捉要画线的两个点,并存在CPoint类的对象中;然后在OnPaint()函数中用MoveTo(左键按下的点)和LineTo(左键弹起的点),这样就可以画线了,当然你可以用CPen类对象修改线条的颜色、样式和粗细
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
为什么好多软件都登陆不上去了
笔记本电脑方口充电器有什么优点
锅破了什么预兆
坐地铁能带多大的行李
郭德纲说的一段顺口溜
双子男怎么追天秤女 @@@!!!急啊,都想死她
北京贝特尔酒店地址在什么地方,想过去办事,
请看过《彼爱无岸》的亲进!
做怎么说是什么歌谁唱的 深七原唱9277歌词
急!把下列句子改成双重否定句
真者,精诚之至也,不精不诚,不能动人. _--庄周
2011款蒙迪欧致胜2.0T发电机一个多少钱
和家人共度佳节是一件很值得高兴的事。 改为
草莓吃了多对人体有什么好处
氨水制冷原理
推荐资讯
为什么我淘宝付款的时候,说系统繁忙是咋回事
众泰Z200这车性价比如何?
东方红小商品市场地址有知道的么?有点事想过
程寨村村这个地址在什么地方,我要处理点事
五米高两方水的压力得用多大功率的水泵
买个五菱之光可以跑58速运吗?谢谢
派出所要我写一份详细材料并交一万元保释金人
乌兰浩特冬季平均气温
五十除于26分之25=?
在淘宝网的后台卖家服务市场中被骗,怎么办
描写花草很多、很稀有的成语
your.uncle.of是什么意思
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?