zoukankan      html  css  js  c++  java
  • MFC简单的画线

    在电脑中绘图,我们首先需要思考的事情是电脑会怎么做。

    首先,当鼠标左键点下去的那一时刻,屏幕会扑捉到用户点击的坐标,此时用户不松开鼠标左键在屏幕上面移动就形成了线,当用户松开鼠标,系统会扑捉到用户松开鼠标的坐标点,此时代表划线结束。

    步骤:

    1)创建项目:文件——新建——项目——MFC应用程序

    点击确定

    点击下一步,这一步有两个需要改变的地方

    之后点击完成,如果不小心点成下一步的话也没有关系,后面的一直下一步,或者点击完成就好!创建成功!!!

    2)工作:

     在旁边的工具栏里面,默认打开的是类视图,选择类视图

     

     
    点击下方的1箭头所指的“属性”,再找到2箭头所指的WM_LBUTTONDOWN,点击右边的空行,会出现如图所示,点击<Add>OnLButtonDown

    之后就会出现如图所示的样子

    接下来要做的就是测试一下我们的鼠标按下是不是真的有效

    所以在里面添加代码: MessageBox(TEXT("这是框架!"));//这句话的意思是弹出一个对话框,里面的内容为“这是框架!”

     按F5键运行,事实上能够运行出来,但是当按下鼠标左键的时候却没有任何的反应,那么这是为什么呢?

    接下来我们以同样的方法在类视图中选择

    CLineationView,这个类的意思是视图类,以同样的方法添加函数WM_ONBULLTONDOWN;

    之后再在里面天价代码:MessageBox(TEXT("视图类!"));//以对话框的样式弹出“视图类!”;

    之后按F5键,得到如图所示的东东:

    这说明一个什么样的问题呢?就像盖房子一样,首先要有框架,之后添上砖头,再涂上水泥和颜料。

    而我们第一次添加的CMainFrame就是在框架里面写东西,现在的CLineationView就是在外面涂刷的白漆上面写东西。试问你认为能在哪里看到这个消息呢,是看到砖头里面,还是白漆上面呢?(This my view,so this is possible wrong!)

    接下来我们要做什么?那就是删除掉框架里面刚刚写的东西!

    你想一行一行删除?不,不用这么麻烦,

     鼠标放在CMainFrame上面, 右键点击类向导 找到方法 然后选择你要删除的函数 删除就可以了;(目前我知道的是这种方法,如果你有更方便的可以交流一下

    接下来就要开始完成最终的部分了:

    首先注释掉你在view视图类里面的messagebox函数;

    接着写

    在view类的名字上面左键, 添加,添加函数,类型:CPoint,变量名:m_ptOrigin,私有成员。创建之后系统会自动生成初始化的数据的代码,之后: 

    HDC hdc;
    hdc = ::GetDC(m_hWnd);
    MoveToEx(hdc, m_ptOrigin.x, m_ptOrigin.y, NULL);
    LineTo(hdc, point.x, point.y);

    ::ReleaseDC(m_hWnd, hdc);//释放hdc

     HDC是绘图的一个类型,getdc是得到当前多要绘图窗口的句柄,之后呢movetoex就是鼠标左键不断移动的新的一个地址,也就是画线两点中的起始点。你可以注释掉这句话再运行就会明白了。

    而下面的lineto就是划线了,它会把两点连接起来画一条直线。最后的releasedc就是释放掉hdc,避免内存泄漏。

    自己动手试一下吧,你将会发现新的问题哦!!!!

  • 相关阅读:
    CCF模拟题 窗口
    CSUOJ 1541 There is No Alternative
    MySQL数据库优化的八种方式(经典必看)
    PHP面向对象-----魔术方法
    PHP面向对象(OOP)----分页类
    2017最新PHP初级经典面试题目汇总(下篇)
    2017最新PHP经典面试题目汇总(上篇)
    原型模式
    适配器模式
    策略模式
  • 原文地址:https://www.cnblogs.com/jianmoxiansheng-Guo/p/11362668.html
Copyright © 2011-2022 走看看