创建应用程序框架(C教程PPT课件).ppt

上传人:xt****7 文档编号:5336719 上传时间:2020-01-26 格式:PPT 页数:46 大小:1.21MB
返回 下载 相关 举报
创建应用程序框架(C教程PPT课件).ppt_第1页
第1页 / 共46页
创建应用程序框架(C教程PPT课件).ppt_第2页
第2页 / 共46页
创建应用程序框架(C教程PPT课件).ppt_第3页
第3页 / 共46页
点击查看更多>>
资源描述
3 6综合练习 题目 针对学生管理系统 以面向对象的方法在控制台环境下编写一个小程序 所要求的内容如下 1 有基类 子类至少两层 2 在类中应该有静态数据成员和函数 3 打印输出函数采用内联函数形式 4 输出成员变量的值采用const方法 5 要求在类中实现类 运算符 6 程序可执行 CStudent CComputerStudent CSportStudent CArtStudent CSportArtStudent 虚拟继承 虚拟继承 第4章创建应用程序框架 学习目标 要创建应用程序框架 首先要了解应用程序向导 通过应用程序向导用户可以创建单文档 多文档和对话框等不同的应用程序框架 为了更好的使用应用程序向导 单单会创建是不够的 还要了解应用程序向导生成的文件都有什么用途 这样才能编写好程序 并且还要熟练的调试程序 才可以编写出高质量的程序 本章主要介绍应用程序框架的相关内容 包括应用程序的创建 生成文件介绍及调试信息等内容 通过学习本章 读者可以了解以下内容 l应用程序向导l应用程序向导生成的文件lClassWizard类向导l程序调试 4 1应用程序向导 与其他的可视化编程语言一样 VisualC 6 0也提供了向导的功能 实际上 向导就是快速生成资源及代码的工具 有了这些向导 可以减轻程序员手工编写代码的工作量 使程序员能把精力放在具体代码的编写上 VisualC 中的向导类型使用应用程序向导 VisualC 中的向导类型 VisualC 功能十分强大 可以创建多种文件类型 所以其向导的类型也很多 当用户执行 File New 菜单命令时 就可以看到这些应用程序向导类型的列表 如图4 1所示 VisualC 中的向导类型 VisualC 集成开发环境中向导类型及生成的程序说明如下 lATLCOMAppWizard 创建包含ActiveX控件的ATL ActiveTemplateLibrary lClusterResourceTypeWizard 创建能够在微软群服务器上模拟和管理的项目 lCustomAppWizard 以用户定制的模板向导创建项目 lDatebaseProject 创建数据库项目 lDevStudioAdd inWizard 创建C 或汇编语言编写的类似于DeveloperStudio形式的外接程序 lExtendedStoredProcWizard 在SQLServer上创建一个扩展存储的程序 lISAPIExtensionWizard 利用ISAPI InternetServerAPI 创建网页浏览程序 lMakefile 制作Makefile文件 订制自己项目的集成开发环境 lMFCAcitveXControlWizard 创建基于MFC的ActiveX控件 lMFCAppWizard dll 创建基于MFC的动态连接库 lMFCAppWizard exe 创建基于MFC的应用程序 这是最常使用的一个向导 lNewDatabaseWizard 在SQLServer上创建一个SQLServer数据库 lUtilityProject 创建自定义编译规则的项目 该项目可以作为一些子项目的主项目 它不产生LIB DLL或EXE文件 lWin32Application 创建Win32应用程序 可不使用MFC 采用SDK方式编程或C语言编程 lWin32Dynamic LinkLibrary 创建Win32动态连接库 采用SDK方法 lWin32StaticLibrary 创建Win32静态连接库 采用SDK方法 其中 最常使用的是MFCAppWizard exe 这也是本章讲述的重点 使用应用程序向导 通过前面的学习 读者已经熟悉了构建控制台应用程序 但这不是真正意义上的Windows下可视化程序 下面来看一下如何通过应用程序向导创建应用程序框架 其具体操作步骤如下 1 启动VisualC 6 0集成开发环境 单击菜单栏中的 File New 命令 打开New窗口 2 在New窗口中选择Projects选项卡 在列表中选择MFCAppWizard exe 项 在Projectname文本框中输入工程名Hello 在Location文本框中设置工程文件存放的位置为 D Hello 如图4 2所示 使用应用程序向导 3 单击OK按钮 弹出MFCAppWizard Step1窗口 如图4 3所示 在 MFCAppWizard Step1 窗口中可以设定以下3种类型的程序 lSingledocument 一次只能打开一个文档编辑窗口 lMultipledocument 在应用程序中可同时打开多个文档 lDialogbased 在对话框基础上建立的程序 Document Viewarchitecturesupport 该选项允许生成文档 视图和非文档 视图结构程序 4 这里选择Dialogbased单选项 单击Next按钮 打开MFCAppWizard Step2of4窗口 如图4 4所示 使用应用程序向导 在MFCAppWizard Step2of4窗口中有如下设置 lAboutbox 生成 关于 对话框 lContext sensitiveHelp 生成支持上下文相关帮助的帮助文件 l3Dcontrols 具有3D效果的程序界面 lAutomation 应用程序能够操作在其他应用程序中实现的对象 或者自己的应用程序可供Automation客户使用 lActiveXControls 支持ActiveX控件 lWindowsSockets 支持基于TCP IP协议的网络通信 Pleaseenteratitleforyourdialog 设置应用程序主窗口的标题 使用应用程序向导 5 单击Next按钮 打开MFCAppWizard Step3of4窗口 如图4 5所示 在MFCAppWizard Step3of4窗口中有如下设置 lMFCStandard 标准MFC项目 lWindowsExplorer Windows资源管理器 风格项目 lYes please 在源文件中添加注释 lNo thankyou 不添加注释 lAsasharedDLL 共享动态链接库 lAsastaticallylinkedlibrary 静态链接库 6 单击Next按钮 打开MFCAppWizard Step4of4窗口 如图4 6所示 使用应用程序向导 7 在MFCAppWizard Step4of4窗口中确定类的名称及所在文件的名称 单击Finish按钮 打开NewProjectInformation窗口 如图4 7所示 使用应用程序向导 8 在NewProjectInformation窗口中显示将要创建的文件清单 单击OK按钮完成对话框应用程序的创建 4 2应用程序向导生成的文件 文件类型典型文件举例 文件类型 在创建了项目以后 为了更好的了解应用程序向导 还要属性应用向导生成的文件 各文件的含义如表4 1所示 一般而言 VisualC 中一个类由头文件和源文件两类文件支持 头文件用于定义类 包含指明派生关系 声明成员变量及成员函数 源文件用于实现类 主要定义成员函数的实现代码和消息映射 典型文件举例 利用MFCAppWizard exe 向导生成一个应用程序 根据应用程序种类的不同 生成的文件也有所差异 下面将分类列举 1 应用文件 1 应用程序类文件每个MFC应用程序都需要有一个应用程序类文件 它一般与项目文件同名 例如 在默认情况下 MyProject项目应用程序类头文件为MyProject h 源文件的文件名为 MyProject cpp 它们主要声明及实现应用程序类CMyProjectApp CMyProjectApp类主要负责完成应用程序的初始化 程序的启动和程序运行结束时的清理工作 2 资源文件在项目中 资源通过资源标识符加以区分 通常情况下 应用程序向导会把一个项目中所有资源的标识符放到Resource h中 对资源ID的命名有一定规则 如表4 2所示 典型文件举例 3 标准包含文件应用程序向导会为每一个项目生成一个标准包含头文件StdAfx h 该文件用于包含一般情况下要用到且不会被修改的头文件 如MFC声明文件afxwin h 使用工具栏 状态栏文件afxext h等 StdAfx h和StdAfx cpp文件用来生成预编译文件 2 单文档应用程序 多文档应用程序单文档应用程序和多文档应用程序框架都是由3个类组成的 它们是框架窗口类 文档类和视图类 1 框架窗口类文件在默认情况下 框架窗口的头文件均为MainFrm h 源文件均为MainFrm cpp 这两个文件定义和实现了框架窗口类CMainFrame 这个类是MFC的CFrameWnd类的派生类 它主要负责创建标题栏 工具栏和状态栏 2 文档类文件在默认情况下 文档类头文件都是项目名称 Doc h 组成 源文件都是项目名称 Doc cpp 组成 例如 MyProject项目中文档类头文件为MyProjectDoc h 源文件为MyProjectDoc cpp 它们是定义和实现文档类CMyProjectDoc的 CMyProjectDoc类是MFC中CDocument类的派生类 它主要负责应用程序数据的保存和装载 实现文档的序列化功能 3 视图类文件在默认情况下 视图类头文件都是项目名称 View h 组成 源文件都是项目名称 View cpp 组成 例如 MyProject项目中视图类头文件为MyProjectView h 源文件为MyProjectView cpp 它们是定义和实现视图类CMyProjectView的 CMyProjectView类是MFC中CView类的派生类 它主要负责客户区文档数据的显示及如何进行人机交互 典型文件举例 3 基于对话框应用程序在默认情况下 对话框类头文件都是项目名称 Dlg h 组成 源文件都是项目名称 Dlg cpp 组成 例如 MyProject项目中对话框类头文件为MyProjectDlg h 源文件为MyProjectDlg cpp 它们是定义和实现对话框类CMyProjectDlg的 CMyProjectDlg类是MFC中CDialog类的派生类 它可以完成一个对话框的创建 显示等工作 4 3ClassWizard类向导 ClassWizard的功能ClassWizard的简单应用为项目添加新类手工添加消息处理函数 ClassWizard的功能 ClassWizard 类向导 主要用来定制现有的类和建立新的类 如把消息映射到类的成员函数 把一个控件与类的成员变量对应起来 只有在打开或创建一个项目后 View主菜单才会出现ClassWizard菜单项 这时才能使用ClassWizard 类向导 一般通过快捷键激活ClassWizard MFCClassWizard 对话框共有5个页面 MessageMaps页面用来处理消息映射 为消息添加或删除处理函数 查看已被处理的消息并定位消息处理代码 MemberVariables页面用来给对话框类添加或删除成员变量 这些变量必须是和某些控件资源相关联的控件类型 Automation页面提供了对OLE自动化类的属性和方法的管理 ActiveXEvents页面用于管理ActiveX类所支持的ActiveX事件 ClassInfo页面显示应用程序中所包含类的信息 如一个类的头文件 实现文件和基类信息 图4 8为 MFCClassWizard 对话框 ClassWizard的简单应用 在编程时 经常使用的就是 MFCClassWizard 对话框中的MessageMaps页面和MemberVariables页面 下面围绕着它们简单介绍一下 1 怎样为类添加一个消息响应函数 1 首先 建立一个基于对话框的应用程序 2 单击 View ClassWizard 菜单命令打开 MFCClassWizard 对话框 3 确定当前 为MessageMaps 页面 在 ObjectIds 列表中选择需要添加消息响应函数的对象 在 Messages 列表中选择需要添加的消息 例如 本教材需要为对话框添加WM INITDIALOG消息响应函数 就在 ObjectIDs 列表中选择 CMyProjectDlg 在 Messages 列表中找到 WM INITDIALOG 并双击该列表项 此时 在 Memberfunctions 列表中会出现 OnInitDialog 如图4 9所示 ClassWizard的简单应用 2 如何将一个控件与一个类的成员变量对应起来 1 首先 建立一个基于对话框的应用程序 2 单击 View ClassWizard 菜单命令打开 MFCClassWizard 对话框 3 确定当前 为MemberVariables 页面 在 ControlIds 列表中找到需要对应成员变量的控件ID 例如 本教材需要为 确定 按钮添加一个对应的变量m ButOK 需要在ControlIds 列表中双击 确定 按钮的资源ID IDOK 在弹出的 AddMemberVariable 对话框中找到 MemberVariableName 文本框 在此文本框中输入 m ButOK 单击OK按钮完成添加操作 在函数名前有 W 标志的表示消息响应函数 有 V 标志的表示虚函数 为项目添加新类 为项目添加新类的方法如下 1 首先 建立一个基于对话框的应用程序 2 单击 View ClassWizard 菜单命令打开 MFCClassWizard 对话框 3 单击右上角 AddClass 按钮 在弹出的菜单中选择 New 菜单项 弹出 NewClass 对话框 如图4 10所示 为项目添加新类 4 在 Name 文本框中添入 CNewClassName 在 Baseclass 文本框中选择需要创建的类的基类 单击 OK 按钮 将类CNewClassName添加到项目中 在Workspace工作区中就可以对这个类进行编辑了 如图4 11所示 手工添加消息处理函数 消息处理函数是VC 最常用到的函数之一 实际上 消息处理函数是通过在消息地图中声明来实现的 请看下边的例子 手工为对话框类MyProject添加消息DIY NEWMESSAGE 自定义消息 的消息响应函数OnNewMessage 1 首先 建立一个基于对话框的应用程序MyProject 2 单击 View ResourceSymbols 弹出 ResourceSymbols 对话框 3 在 ResourceSymbols 对话框中单击 New 按钮 为类添加一个新标识 DIY NEWMESSAGE 如图4 12所示 4 关闭 ResourceSymbols 对话框 在Workspace中找到类CMyProjectDlg 双击CMyProjectDlg节点下的任意一个成员函数标识 代码编辑器中显示MyProjectDlg cpp文件内容 5 在代码编辑器中找到下段代码 BEGIN MESSAGE MAP CMyProjectDlg CDialog END MESSAGE MAP 这是消息地图的声明 读者需要在这个消息地图中添加消息响应说明 BEGIN MESSAGE MAP CMyProjectDlg CDialog ON MESSAGE DIY NEWMESSAGE OnNewMessage END MESSAGE MAP 这句代码告诉编译器 当有DIY NEWMESSAGE消息发生时 执行OnNewMessage成员函数 手工添加消息处理函数 6 在Workspace中选中类CMyProjectDlg的标识 单击鼠标右键 在弹出的快捷菜单中选择 AddMemberFunction 项 打开 AddMemberFunction 对话框 7 在 AddMemberFunction 对话框中的 FunctionType 文本框中添入函数的返回值 在 FunctionDeclaration 文本框中添入 OnNewMessage 单击 OK 按钮 将此函数添加到项目中 如图4 13所示 8 这样 一个消息响应函数就做成了 当系统捕捉到 DIY NEWMESSAGE 消息时 会自动执行OnNewMessage成员函数 4 4程序调试 断点跟踪调试窗口 程序调试是一个程序员最基本的技能 其重要性甚至超过学习一门语言 不会调试的程序员就意味着他即使会一门语言 却不能编制出任何好的软件 编写健壮的代码是程序员需要具备的能力 开发高品质的软件是程序员的追求 然而 在实际开发过程中 错误的产生是不可避免的 由于程序员编写代码的疏忽经常会导致错误的产生 在开发程序时 应保证程序具有强大的错误处理能力 断点跟踪 在调试程序时 经常在程序可能出现错误的地方设置一个断点 在调试状态下运行程序时 当程序执行到断点处 会产生中断 使用户有机会查看此时程序的运行状态 在VisualC 中设置断点非常简单 在代码编辑器中选择欲设置断点的代码行 按F9键即可设置一个断点 如果用户想要设置复杂的断点 可以按组合键打开断点窗口 断点窗口包含了3个选项卡 其中每个选项卡包含了一种设置断点的方法 断点窗口如图9 1所示 断点窗口中列出了当前工程中的所有断点 用户可以单击 Remove 或 RemoveAll 按钮移除某个断点或所有断点 1 设置条件断点在设计断点时 可能需要设置一个条件断点 所谓条件断点 是在变量或表达式符合断点条件时才产生中断 进入调试阶段 如图4 14所示 断点跟踪 1 编写一段代码 如下 intsum 0 for inti 0 i 10 i sum i 2 按Ctrl B组合键打开断点窗口 在 sum i 行处设置一个段点 如图4 15所示 断点跟踪 3 单击 Conditon 按钮 打开断点条件窗口 在该窗口中设置断点条件 如图4 16所示 4 运行程序 执行代码 当变量i等于2时将产生中断 如图4 17所示 断点跟踪 2 设置数据断点数据断点只能在Breakpoints对话框中设置 选择 Data 选项卡 就显示了设置数据断点的对话框 在编辑框中输入一个表达式 当这个表达式的值发生变化时 数据断点就到达 一般情况下 这个表达式应该由运算符和全局变量构成 1 定义一个全局变量 并编写一段代码 如下 voidCDebugDlg OnOK intsum 0 for i 0 i 10 i i为一个整型全局变量 sum i 2 按Ctrl B组合键打开断点窗口 选择 Data 选项卡 在编辑框中输入全局变量i 如图4 18所示 断点跟踪 3 单击OK按钮保存设置 运行程序 当程序试图改变变量i的值时将产生中断 进入调试阶段 如图4 19所示 4 单击 确定 按钮 程序将停留在 改变i值 的代码处 如图4 20所示 断点跟踪 3 设置消息断点VisualC 也支持对Windows消息进行截获 有两种方式进行截获 窗口消息处理函数和特定消息中断 在 Breakpoints 对话框中选择 Messages 选项卡 就可以设置消息断点 如果采用窗口消息处理方式 那么每次消息被这个函数处理 断点就到达 如果采用特定消息中断方式 则每次指定的消息到达 程序就中断 1 按组合键打开断点窗口 选择 Messages 选项卡 如图4 21所示 2 在上方的组合框中输入窗口过程 AfxWndProc 在下方的组合框中输入产生中断的消息 例如 WM LBVTTONOOWN 如图4 22所示 断点跟踪 3 运行程序 当用户单击鼠标左键时将产生中断 如图4 23所示 断点跟踪 4 单击 确定 按钮 程序将停留在AfxWndProc处 如图4 24所示 4 断点跟踪前面本教材介绍了设置断点的方法 下面介绍如何利用断点跟踪程序 1 编写一段代码 并在代码处设置一个断点 如图4 25所示 断点跟踪 2 运行程序 执行断点所在的函数 程序将停留在断点处 如图4 26所示 断点跟踪 3 按键执行当前行代码 指针将移动到下一行代码 同时sum的值被设置为0 用户可以通过鼠标或调试窗口查看变量的值 如图4 27所示 断点跟踪 4 按键连续执行代码 直到当前指针停留在 total Add 10 2 语句处 如图4 28所示 断点跟踪 5 当前代码涉及一个函数调用 Add函数 如果用户按键 当前指针不会进入Add函数而继续向下执行 如果用户按键 当前指针会进入Add函数 在Add函数执行后重新返回被调用的函数处 按键进入Add函数 如图4 29所示 断点跟踪 调试窗口 1 Watch调试窗口Watch窗口主要用来查看变量或对象的信息 用户可以通过单击 View DebugWindows Watch 菜单项或者按组合键打开Watch窗口 为了查看某个变量或对象的值 在程序处于中断时 用户可以利用鼠标将其拖动到Watch窗口中 这样 在Watch窗口中将显示变量或对象的详细信息 如图4 30所示 2 CallStack窗口CallStack窗口能够查看当前函数的调用信息 例如函数的参数信息 调用当前函数的参数等 CallStack窗口如图4 31所示 调试窗口 从图4 31中可以看出当前函数为Add 参数值分别为10 20 在InitInstance方法中调用了Add方法 当用户在CallStack窗口中双击InitInstance方法时 代码编辑器将进入到InitInstance方法 并显示在该方法何处调用了Add方法 如图4 32所示 3 Memory窗口Memory窗口用于显示某个地址开始处的内存信息 默认地址为0 x00000000 用户可以通过单击 View DebugWindows Memory 菜单项或者按组合键打开Memory窗口 如图4 33所示 调试窗口 在调试程序时 使用Memory窗口查看某个对象或变量的地址信息及值信息 例如 将某个变量拖动到Memory窗口的列表中 在列表中将显示该变量的地址及变量的值 如图4 34所示 4 Variables窗口Variables窗口用于显示当前执行函数中上下文可见的变量信息 当代码执行一条语句后 该语句涉及的变量值在Variables窗口中会红色显示 用户可以通过单击 View DebugWindows Variables 菜单项或者按组合键打开Variables窗口 如图4 35所示 调试窗口 5 Registers窗口Registers窗口用于显示当前CPU寄存器的名字 数据和标志 同时 也能够显示浮动栈指针 在Registers窗口中 用户可以改变任何一寄存器的值和标记 用户可以通过单击 View DebugWindows Registers 菜单项或者按组合键打开Registers窗口 如图4 36所示 在Registers窗口中 用户可以修改任意寄存器或一个地址的值 在代码中设置一个断点 如图4 37所示 按键进入Add函数内部 如图4 38所示 调试窗口 按键执行Add函数体 按 Alt 5 组合键打开Registers窗口 如图4 39所示 在图1 30中修改EAX的值为 00000001 然后在代码编辑窗口按键执行代码 如图4 40所示 调试窗口 从图4 40中 可以发现变量three的值为 1 而不是 30 因为通过修改EAX寄存器 导致Add函数的返回值发生了变化 6 Disassembly窗口反汇编窗口Disassembly用于显示编译器为源代码产生的汇编指令 用户可以通过单击 View DebugWindows Desassembly 菜单项或者按组合键打开Disassembly窗口 如图4 41所示 图4 41显示的是程序在执行 Add 方法时 编译器将 Add 翻译成的汇编指令 从Disassembly窗口中可以发现 编译器在调用某个方法时 会产生大量的附加代码初始化参数堆栈 在方法执行结束后 会生成一些附加代码释放参数的堆栈 4 5课后习题 设置条件断点调试程序 设置数据断点调试程序 设置消息断点调试程序
展开阅读全文
相关资源
相关搜索

当前位置:首页 > 图纸专区 > 课件教案


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!