• 加中实训第一天(笔记+代码) 2013.5.28


    实训第一天实现了一个在窗口上画线的程序。

    下面是实现流程:

     工具: 


    VC++6.0、Visual.Assist.X

    准备工作


    1.
    New->Win32 Application(Game) //创建一个项目

    2.
    New->HeaderFile(game.h)->#include <afxwin.h> //在项目里创建一个头文件,在头文件里添加一行代码

    3.
    New->ResourceScript(game.rc) //在项目里创建一个资源文件

    4.
    Project->setting->General
    在MicrosoftFoundationClasses栏目里选择 Use MFC in a Static Library

    5.
    View->classWizard
    依次点“是”->Ok->Ok

    6.
    Insert->New class
    在Class type里选择Generic Class
    在Name里填写GameApp
    在Base class里添加CWinApp  public //表示CWinApp是GameApp的基类
    这样就创建了一个GameApp类,VC会自动生成一个GameApp.h文件(类声明)和GameApp.cpp文件(类实现)

    7.
    继续创建一个GameWnd类
    Insert->New class
    在Class type里选择MFC Class //注意和上一个不一样
    在Name里填写GameWnd
    在Baseclass里添加CFrameWnd  public 


    准备工作结束,开始写代码


    1.
    打开GameApp.h
    添加成员函数 BOOL InitInstance();

    2.
    打开GameApp.cpp
    添加:
    GameApp theapp;

    BOOL GameApp::InitInstance() //BOOL必须用大写,用bool会出错
    {
     m_pMainWnd=new GameWnd;  //内存里申请一块空间,把空间首地址给前面的指针
    }

    3.
    因为上一步用到了GameWnd的构造函数,所以
    打开GameWnd.cpp
    在GameWnd::GameWnd()里添加为
    GameWnd::GameWnd()
    {
     Create(NULL,"烟台大学"); //窗口的名称,标题栏
    }

    4.
    打开InitInstance
    继续添加为
    BOOL GameApp::InitInstance()
    {
     m_pMainWnd=new GameWnd;  //内存里申请一块空间,把空间首地址给前面的指针
     m_pMainWnd->ShowWindow(SW_SHOW);
     m_pMainWnd->UpdateWindow();
     return true;
    }

    5.
    在GameApp.cpp里添加头文件
    #include "GameWnd.h" //因为用到了new GameWnd

    6.
    打开GameWnd.h
    将类声明里面默认的protected:改为public:

    7.
    打开GameWnd.cpp
    注释掉#include "stdafx.h"
    //#include "stdafx.h"

    =========================================================================
    下面开始就在GameWnd类里面写,不用管GameApp了

    8.
    在GameWnd类上右键,单击Add Windows Message Handler //表示添加一个windows句柄
    找到WM_PAINT双击
    点OK

    9.
    打开GameWnd->OnPaint(),开始写代码
    在CPaintDC dc(this); 后面添加
     dc.MoveTo(100,200);
     dc.LineTo(300,400); 
    这样一条线就出来了。
    继续画,看能不能画出一个桌子来。

    10.
    试验:
    打开MSDN
    查找 Rectangle(100,200,300,400); //矩形
     Ellipse(100,200,300,300); //圆
    函数,了解他们的作用,并掌握MSDN的使用方法。

    11.
    继续写代码,接下来要实现在窗口上任意画线。

    右键GameWnd单击 Add Member Variable
    在第一个框里填:CPoint
    在第二个框里填:start
    在access里选Private
    点OK
    找到刚才添加的变量,在下面继续添加终点
    CPoint end;
    这样就变成:
    private:
    CPoint start;
    CPoint end;
    以上是给GameWnd类添加private变量。

    12.
    找到构造函数GameWnd::GameWnd() //双击GameWnd()
    之前已经有了
    GameWnd::GameWnd()
    {
     Create(NULL,"烟台大学");
    }
    继续添加
    要实现功能,当鼠标左键按下去的时候,把鼠标所在的点坐标给起点,当松开的时候,把此事鼠标所在的点坐标给终点。

    在GameWnd类上右键,单击Add Windows Message Handler //表示添加一个windows句柄
    找到WM_LBUTTONDOWN双击 //表示按下鼠标时
    找到WM_LBUTTONUP双击 //表示松开鼠标
    点ADD And EDIT //加入并编辑

    13.
    找到添加的OnLButtonDown()句柄函数,添加代码 
    start=point; //将鼠标按下时的坐标赋给起点
    函数变成:
    void GameWnd::OnLButtonDown(UINT nFlags, CPoint point)
    {
     // TODO: Add your message handler code here and/or call default
     start=point;
     CFrameWnd::OnLButtonDown(nFlags, point);
    }
    同样修改OnLButtonUp()函数,添加end=point; //将鼠标松开时的点坐标赋给终点,这样一条线就出来了

    14.
    运行发现无反应,修改代码
    在OnLButtonUp()后面继续添加一行代码:
    Invalidate(false); //鼠标松开的时候将屏幕刷新一下

    //如果出现24个错误,多编译几遍就没了。如果不管用,把项目关了重新开启一遍。如果还是不行,把项目所在文件夹下debug文件夹删掉。

    15.
    运行代码,可以在窗口上任意画线了!


    下面是代码资源链接:

    http://pan.baidu.com/share/link?shareid=684887&uk=1779322541

  • 相关阅读:
    ubuntu下无法在目录下创建文件夹,权限不足解决办法
    mongo中的模糊查询
    mysql中的模糊查询
    mysql安装与配置详情
    Django model中的class Meta详解
    kafka集群搭建
    myeclipse/eclipse添加Spket插件实现ExtJs4.2/ExtJs3智能提示
    博客园自定义标题、阅读目录、导航栏、活动的推荐&反对按钮
    IntelliJ IDEA 14 创建maven项目二
    EXT4.2--Ext Designer 使用
  • 原文地址:https://www.cnblogs.com/yym2013/p/3104785.html
Copyright © 2020-2023  润新知