mfc学习

最近有些烦躁,技术让我在家等人事电话,这都快一周了....


依托mfc框架创建自己的应用程序

Frm窗口框架类,Application应用程序类,Doc文档类,View视图类.

Frm跟view的关系就好比,墙跟墙纸的关系.我们要绘图,书写工作就得在View类上进行.

vs中类视图为我们提供了很大的方便,可以方便的添加消息


今天学习了,通过鼠标按下,画线

主要代码在视图类中完成,通过类视图,添加OnLButtonDown,OnLButtonUp,OnMouseMove三个消息

在View类中添加,两个成员变量,CPoint oldpt,Bool isPress

oldpt用来记录鼠标按下时的位置, isPress作为标志,记录鼠标是否抬起

mfc提供CClientDC类来实现绘图:

绘制线条的起始点:MoveTo(CPoint p) p – 起始点坐标

绘制一条到指定点的线:LineTo(CPoint p) p – 终点坐标

CClientDC::CClientDC

CClientDC( CWnd* pWnd );
   throw( CResourceException );
参数:
pWnd设备上下文将要存取的客户区所在的窗口。
void CMFCApplication1View::OnLButtonUp(UINT nFlags, CPoint point)
{
// TODO: 在此添加消息处理程序代码和/或调用默认值


//画直线

        //CClientDC 构造函数需要传一个窗口类,在View类中实现,这里直接穿this指针

//CClientDC dc(this);   
//dc.MoveTo(m_oldpt);
//dc.LineTo(point);

this->m_isPress = FALSE;
CView::OnLButtonUp(nFlags, point);
}
void CMFCApplication1View::OnMouseMove(UINT nFlags, CPoint point)
{
// TODO: 在此添加消息处理程序代码和/或调用默认值
//创建画笔
CPen pen(PS_DOT, 2, RGB(255, 0, 255));
// 划线函数 判定状态
CClientDC dc(this);
//选择画笔 
CPen *old = dc.SelectObject(&pen);
if (m_isPress)     //鼠标移动事件中,该消息一直在消息队列中,使用if判断
{
dc.MoveTo(m_oldpt);
dc.LineTo(point);
//更新坐标点
m_oldpt = point;
}
//还原画笔
dc.SelectObject(old);
dc.Ellipse(100,100,200,300);
CView::OnMouseMove(nFlags, point);
}


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值