博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
加中实训第一天(笔记+代码) - 2013.5.28
阅读量:5925 次
发布时间:2019-06-19

本文共 2709 字,大约阅读时间需要 9 分钟。

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

下面是实现流程:

 

 工具: 


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://woxvx.baihongyu.com/

你可能感兴趣的文章
★不评价别人的生活,是一个…
查看>>
Java生成十六进制的MD5加密字符串
查看>>
struts2 传值方式
查看>>
CentOS7 zookeeper3.4.11安装部署
查看>>
使用gitlab+git+mysql+redis+nginx搭建自己的代码管理平台
查看>>
C++ 语言中定义了如下转义字符(C ++ primer)
查看>>
自己动手写一个Camera
查看>>
join
查看>>
设计模式:装饰者
查看>>
树莓派 ( Raspberry pi ) 安装火狐浏览器
查看>>
jquery slider的总结
查看>>
CentOS minimal+VirtualBox 设置桥接DHCP网络连接
查看>>
phpredis编译安装
查看>>
stackless突破python用户级线程库和复杂递归---<<python核心编程第二版>>
查看>>
SQL:exist使用
查看>>
Jquery做DIV拖动效果(附注释)
查看>>
卸载CentOS系统自带的jdk
查看>>
Cisco路由器和交换机型号
查看>>
Hbase安装: 分布式模式
查看>>
错误:Caused by: org.yaml.snakeyaml.parser.ParserException: while parsing MappingNode
查看>>