游戏设计基础与实践教程 教学ppt课件第4章 MFC编程基础.ppt
《游戏设计基础与实践教程 教学ppt课件第4章 MFC编程基础.ppt》由会员分享,可在线阅读,更多相关《游戏设计基础与实践教程 教学ppt课件第4章 MFC编程基础.ppt(140页珍藏版)》请在三一办公上搜索。
1、第四章 MFC编程基础,2,第四章 MFC编程基础,4.1 开发环境4.2 SDI相关知识4.3 鼠标与键盘4.4 GDI相关知识4.5 位图及其加载,4.6 对话框4.7 控件4.8 菜单4.9 集合类4.10 程序示例,4.1 开发环境,软件开发环境(Software Development Environment,SDE)是指在基本硬件和数字软件的基础上,为支持系统软件和应用软件的工程化开发和维护而使用的一组软件,简称SDE。由以下两部分构成: 软件工具 环境集成机制,3,4.1.1 了解开发平台,1. 应用程序向导 向导实质上是一个源代码生成器,利用应用程序向导可以快速创建各种风格的应
2、用程序框架,自动生成程序通用的源代码,这样大大减轻了编写代码的工作量。 Visual C+集成开发环境包含了创建各种类型应用程序的向导,执行File菜单中的New命令即可看到向导类型。,4,4.1.1 了解开发平台,5,4.1.1 了解开发平台,6,4.1.1 了解开发平台,2. 引入应用程序类向导的目的 为了避免程序员重复编写这些代码,一般的可视化软件开发工具都提供了创建Windows应用程序框架的向导。,7,MFC APPWizardexe的功能如下: 1)MFC APPWizardexe是创建基于MFC的Windows应用程序的向导。当利用MFC APPWizardexe创建一个项目时,
3、它能够自动生成一个MFC应用程序的框架;,4.1.1 了解开发平台,2. 引入应用程序类向导的目的 MFC APPWizardexe的功能如下: 2)即使不添加任何代码,当执行编译、链接命令后,Visual C+ IDE将生成一个Windows界面风格的应用程序。 3)MFC应用程序框架将那些每个程序都共同需要使用的代码封装起来。,8,4.1.1 了解开发平台,2. 引入应用程序类向导的目的 MFC APPWizardexe的功能如下: 4)MFC APPWizardexe向导提供了一系列选项,程序员通过选择不同的选项,可以创建不同类型和风格的MFC应用程序,并可指定不同的程序界面窗口。,9,
4、4.1.1 了解开发平台,2. 引入应用程序类向导的目的 MFC APPWizardexe创建的应用程序的类型包括以下几种: 1)Single document:单文档界面应用程序。 2)Multiple documents:多文档界面应用程序。 3)Dialog based:基于对话框的应用程序。,10,4.1.2 类向导ClassWizard,ClassWizard可以完成的主要功能如下: 创建新类。进行消息映射。添加成员变量覆盖虚拟函数。,方法:ViewClassWizard选项,11,4.1.2 类向导ClassWizard,ClassWizard类向导提供了五个选项卡: Messag
5、e Maps Member Variables Automation Active Events Class Info,12,4.1.2 类向导ClassWizard,Message Maps 选项卡,13,4.1.2 类向导ClassWizard,Member Variables选项卡,14,4.1.3 项目与项目工作区,1. 项目 项目名是项目中其他文件命名的基础,它的后缀名为 .dsp(Developer Studio Project)。,15,2. 工作区 项目工作区文件的后缀名为 .dsw(Developer Studio Workspace)。,4.1.3 项目与项目工作区,2.
6、工作区,工作区由ClassView、ResourceView 及 FileView三个面板组成,16,4.1.3 项目与项目工作区,ClassView,17,4.1.3 项目与项目工作区,ResourceView,18,4.1.3 项目与项目工作区,FileView,19,20,第四章 MFC编程基础,4.1 开发环境4.2 SDI相关知识4.3 鼠标与键盘4.4 GDI相关知识4.5 位图及其加载,4.6 对话框4.7 控件4.8 菜单4.9 集合类4.10 程序示例,4.2 SDI相关知识,22,新建一个名为Sample的工程在项目工作区的类视图,我们可以看到应用程序中已有五个类: CAb
7、outDlg CMainFrame CSampleApp CSampleDoc CSampleView,4.2.1 新建一个SDI应用程序,23,4.2.1 新建一个SDI应用程序,MFC中几乎所有的类都以CObject作为基类,Sample程序中的五个类也不例外:CSampleApp负责应用程序的初始化;文档类CSampleDoc继承自CDocument,充当应用程序数据的容器;,24,4.2.1 新建一个SDI应用程序,MFC中几乎所有的类都以CObject作为基类,Sample程序中的五个类也不例外:CSampleView实现文档数据的可视化;CMainFrame为应用程序提供一个窗口;
8、CAboutDlg:向导自动生成的“关于”对话框类。,25,4.2.2 文档视图结构,文档-视图结构是 MFC 模式的基本框架文档是数据元素的集合,并提供了管理和维护数据的手段。视图提供可视的数据显示,还提供了一个与文档中的数据交互的界面,它把用户的输入转化为对文档中数据。,26,4.2.2 文档视图结构,27,文档/视图结构的工作机制,28,文档类由CCmdTarget类派生,CDocument 类的一般方法,29,视图类,CView 的一般方法,CView 的主要虚拟方法,30,SDI程序示例,文档/视图结构功能如此强大,因此一般我们都首先使用AppWizard生成基于文档/视图结构的单文
9、档或多文档框架程序。然后在其中添加自己的特殊代码,完成自己需要的功能。,31,一个显示钱币叠加的小程序,通过本例,来学习文档-视图结构的使用方法。建立一个SDI应用程序,在文档类添加关于钱币个数的数据,并在视图中图示化钱币及其数值;当改变了文档中的钱币数量后,视图上图示化的钱币也得得到实时更新,32,新建工程,并添加数据,利用MFC生成一个名为Coin的SDI工程在CCoinDoc中添加整型变量 m_Coin 来表示钱币数添加成员变量的方法有两种,一种是手工添加,另一种是利用向导来添加 手工方法,就是在CCoinDoc类声明中添加: public: int m_Coin; 向导方法,利用下图所
10、示,33,利用向导添加成员变量,34,成员变量的初始化,根据C+的知识,一般情况下,类的成员变量的初始化是在类的构造函数中完成的。对于文档类,也可以在OnNewDocument()函数中添加成员变量的初始化代码: m_Coin=1;,35,文档数据的可视化,在CCoinView的OnDraw函数中编写代码实现钱币的可视化,即用文字显示钱币个数:,36,文档数据的可视化,在CCoinView的OnDraw函数中编写代码实现钱币的可视化,即用文字显示钱币个数,并用图形显示一摞钱币,添加OnAddCoin函数,37,视图更新,根据MFC中的文档视图机制,如果文档数据发生了变化,则所有的视图都必须被通
11、知到,以便它们能够对所显示的数据进行相应的更新,它是通过:CDocument:UpdateAllViews() 函数来实现的,38,第四章 MFC编程基础,4.1 开发环境4.2 SDI相关知识4.3 鼠标与键盘4.4 GDI相关知识4.5 位图及其加载,4.6 对话框4.7 控件4.8 菜单4.9 集合类4.10 程序示例,39,鼠标与键盘是用户与应用程序交互的手段在MFC中,对鼠标和键盘的处理已经标准化了,只需在应用程序中添加事件,MFC自动生成相对应的处理接口,4.3 鼠标与键盘,40,常用的鼠标事件有: OnLButtonDblClk OnLButtonUp OnLButtonDown
12、 OnRButtonDblClk OnRButtonUp OnRButtonDown OnMouseMove,4.3.1 鼠标事件,41,程序示例,还是以上一节的硬币程序为例,来学习在程序中添加鼠标事件我们可以不用点击菜单,而是点击鼠标来更改文档中的硬币数据:单击鼠标左键增加硬币,单击鼠标右键减少硬币,42,在程序中添加鼠标事件,利用平台提供的向导,在CCoinView上单击右键,就会出现右图所示菜单,选中“Add Windows Message Handler”:,43,从事件列表中选择鼠标事件,44,消息处理接口,点击上页右边的”Add and Edit”按钮,就会在CCoinView中出
13、现消息处理函数:,同理,添加鼠标右键单击事件,45,在生成的函数中添加自己的代码,点击鼠标左键,则钱币数加1,即要把文档中的成员变量m_Coin += 1:,46,更新与重绘,在 OnLButtonDown() 函数中添加语句 pDoc-UpdateAllViews(NULL);来实现更新与重绘。其实,在视图类中有一个函数也可以实现相同的功能,即重绘函数 void Invalidate( BOOL bErase = TRUE );,47,在键盘上按下或释放某一个键,同样也会触发某一个对应的消息在类视图中的 CCoinVIew 类上点击右键,选择 “Add Windows Message Han
14、dler”,在出现的事件列表中有WM_KEYDOWN和WM_KEYUP,可以选择其中一个,4.3.2 键盘事件,48,程序示例,在硬币程序中添加键盘事件首先添加WM_KEYDOWN事件处理接口,得到,49,具体代码,50,第四章 MFC编程基础,4.1 开发环境4.2 SDI相关知识4.3 鼠标与键盘4.4 GDI相关知识4.5 位图及其加载,4.6 对话框4.7 控件4.8 菜单4.9 集合类4.10 程序示例,51,GDIGraphics Device Interface 图形设备接口负责系统与用户或绘图程序之间的信息交换,并控制在输出设备上显示图形或文字,4.4 GDI相关知识,52,G
15、DI包括的范围很广,具体有以下功能:绘制点、线、矩形、椭圆、多边形等几何图形;显示BMP等多种格式的图像,并能对图像进行拉伸、缩小、裁剪、旋转、改变透明度等操作;可以设置多种字体来显示文字;可以设置画笔和画刷的属性;可以设置不同类型的坐标系。,4.4 GDI相关知识,53,4.4.1 CGdiObject类的派生类,CBitmap:用于管理、绘制位图资源的类;CPen:用于管理线条绘制的类,通过CPen类对象,可以设置绘图时的线型、线条宽度、颜色等属性;CBrush:定义了画刷,通过CBrush类对象,可以设置绘制封闭图形的填充颜色、填充样式等属性;,54,4.4.1 CGdiObject类的
16、派生类,CPalette CPalette:该类用于管理应用程序的调色板,使应用程序的调色板与其他应用程序不干扰;CRgn:该类定义了区域,区域是由一个或多个封闭几何形体构成的一个范围,来进行填充、鼠标测试等工作;CFont:该类用于管理字体,设置绘制文本的字体大小、字体式样等属性。,55,4.4.2 画笔和画刷的使用方法,1. 画笔的使用方法,56,CreatePen,画笔样式很多,如下图:,画笔样式及说明,57,使用画笔的主要步骤,(1)创建新的画笔类对象: 可以调用CPen类的构造函数CPen:CPen()来创建: CPen pen(PS_SOLID, 2, RGB(0, 0, 255)
17、; 也可以调用CPen类的成员函数CreatePen()来实现: CPen pen; pen.CreatePen(PS_SOLID, 2, RGB(0, 0, 255);,58,(2)保存旧画笔,并将新创建的画笔对象选入设备对象中CPen* pOldPen = pDC-SelectObject(SelectObject() 是CDC类中的一个重要成员函数,调用该函数可实现选择新对象,并返回旧对象的指针(3)开始绘图工作,调用CDC类的各种绘图函数进行绘图(4)恢复原来的旧画笔,同样调用SelectObject()函数来实现。,使用画笔的主要步骤,59,4.4.2 画笔和画刷的使用方法,2. 画
18、刷的使用方法 画刷主要用于将指定区域用颜色进行充填。 使用画刷与使用画笔的方法相似。首先需要创建一个新的画刷对象,然后用它来取代原有的画刷,使用完后再恢复旧画刷。 MFC的CBrush类封装了绘图的画刷工具。,60,使用画刷的程序,61,使用画刷的步骤,与画笔相同,在创建新画刷对象后,也可以采用两种方法来对其初始化。既可以调用CBrush类的构造函数CBrush:CBrush(); CBrush* brush; brush = new CBrush(RGB(255, 0, 0);也可以调用CBrush类的成员函数CreateSolidBrush() 来实现,即程序中的语句: CBrush br
19、ush; brush.CreateSolidBrush(RGB(255, 0, 0);,62,4.4.3 文字的显示和图形的绘制,1. 文字的显示 CDC类中有两种文本输出函数:TextOut() 和 DrawText() TextOut() 只能处理单行文本,后者可以处理多行文本。 BOOL TextOut(int x, int y, const CString TextOut()函数在指定坐标上,以当前字体、颜色等属性显示字符串。,63,CString 用法,CString 是MFC封装的一个用于处理字符串的类,使用很简单 CString str=“Hello, I am Jacky”;
20、pDC-TextOut(10,10,str);该类还有很多成员函数,方便文本处理,4.4.3 文字的显示和图形的绘制,2. 图形的绘制1)画点SetPixel(int x, int y, COLORREF crColor);其中,参数x, y指定点的坐标;crColor 指定颜色值;p为一个POINT结构或CPoint对象,其成员就是x, y,即点的坐标。该函数返回原先此点的颜色。,4.4.3 文字的显示和图形的绘制,2. 图形的绘制1)画点下面的代码表示在(100, 100)点处画一个红点。void CEx09View:OnDraw(CDC* pDC) pDC-SetPixel(100, 1
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 游戏设计基础与实践教程 教学ppt课件 第4章 MFC编程基础 游戏 设计 基础 实践 教程 教学 ppt 课件 MFC 编程

链接地址:https://www.31ppt.com/p-1581982.html