加中实训第一天(笔记+代码) - 2013.5.28
来源:互联网 发布:java和python大数据 编辑:程序博客网 时间:2024/06/01 11:49
实训第一天实现了一个在窗口上画线的程序。
下面是实现流程:
工具:
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
- 加中实训第一天(笔记+代码) - 2013.5.28
- 算法导论学习第一天笔记(java代码版)
- JavaScript(第一天代码)
- 概论笔记(第一天)
- JavaScript(第一天笔记)
- Lua 笔记(第一天)
- QT编程入门学习第一天的笔记&代码
- 一天一段scala代码(一)
- 一天一段scala代码(二)
- 一天一段scala代码(三)
- 一天一段scala代码(四)
- 一天一段scala代码(五)
- 一天一段scala代码(六)
- 一天一段scala代码(七)
- 一天一段scala代码(八)
- 一天一段scala代码(九)
- 一天一段scala代码(十)
- 一天一段scala代码(十一)
- 杭电 1051 Wooden Sticks
- 杭电 1002 A + B Problem II
- L老师讲解的大数问题 - 2013.5.20
- 关于预处理的三大功能之一 —— 条件编译(ifndef)
- C++ 学习拾遗 —— 点滴记录C++学习过程中遇到的问题以及整理
- 加中实训第一天(笔记+代码) - 2013.5.28
- 加中实训第二天(笔记+代码) - 2013.5.29 (待完善)
- 加中实训答辩作品(走迷宫) - 2013.6.2
- 烟大 Contest1024 - 《挑战编程》第一章:入门 Problem A: The 3n + 1 problem
- 烟大 Contest1024 - 《挑战编程》第一章:入门 Problem B: Minesweeper
- 烟大 Contest1024 - 《挑战编程》第一章:入门 Problem D: LC-Display
- 烟大 Contest1024 - 《挑战编程》第一章:入门 Problem E: Graphical Editor
- 烟大 Contest1024 - 《挑战编程》第一章:入门 Problem C: The Trip
- 未来的计算机视觉——增强现实技术