创建应用程序框架_第1页
创建应用程序框架_第2页
创建应用程序框架_第3页
创建应用程序框架_第4页
创建应用程序框架_第5页
已阅读5页,还剩41页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

创建应用程序框架JSP程序设计教程》课件制作人:宋坤第一页,共四十六页,2022年,8月28日【学习导航】

课件制作人:宋坤第二页,共四十六页,2022年,8月28日√本章目录4.1应用程序向导4.2应用程序向导生成的文件4.3ClassWizard类向导

4.4程序调试4.5课后习题√√√√课件制作人:宋坤第三页,共四十六页,2022年,8月28日4.1应用程序向导VisualC++中的向导类型使用应用程序向导√√课件制作人:宋坤第四页,共四十六页,2022年,8月28日VisualC++中的向导类型“File”/“New”菜单命令课件制作人:宋坤第五页,共四十六页,2022年,8月28日VisualC++中的向导类型VisualC++集成开发环境中向导类型及生成的程序说明如下:l

ATLCOMAppWizard:创建包含ActiveX控件的ATL(ActiveTemplateLibrary)。l

ClusterResourceTypeWizard:创建能够在微软群服务器上模拟和管理的项目。l

CustomAppWizard:以用户定制的模板向导创建项目。l

DatebaseProject:创建数据库项目。l

DevStudioAdd-inWizard:创建C++或汇编语言编写的类似于DeveloperStudio形式的外接程序。l

ExtendedStoredProcWizard:在SQLServer上创建一个扩展存储的程序。l

ISAPIExtensionWizard:利用ISAPI(InternetServerAPI)创建网页浏览程序。l

Makefile:制作Makefile文件,订制自己项目的集成开发环境。l

MFCAcitveXControlWizard:创建基于MFC的ActiveX控件。l

MFCAppWizard[dll]:创建基于MFC的动态连接库。l

MFCAppWizard[exe]:创建基于MFC的应用程序,这是最常使用的一个向导。l

NewDatabaseWizard:在SQLServer上创建一个SQLServer数据库。l

UtilityProject:创建自定义编译规则的项目,该项目可以作为一些子项目的主项目,它不产生LIB、DLL或EXE文件。l

Win32Application:创建Win32应用程序,可不使用MFC,采用SDK方式编程或C语言编程。l

Win32Dynamic-LinkLibrary:创建Win32动态连接库,采用SDK方法。l

Win32StaticLibrary:创建Win32静态连接库,采用SDK方法。、其中,最常使用的是MFCAppWizard[exe],这也是本章讲述的重点。

课件制作人:宋坤第六页,共四十六页,2022年,8月28日使用应用程序向导Windows下可视化应用程序框架:(1)菜单栏“File”/“New”--New窗口--Projects选项卡--MFCAppWizard[exe]项课件制作人:宋坤第七页,共四十六页,2022年,8月28日使用应用程序向导

(2)单击OK按钮,弹出MFCAppWizard-Step1窗口lSingledocument:一次只能打开一个文档编辑窗口。lMultipledocument:在应用程序中可同时打开多个文档。lDialogbased:在对话框基础上建立的程序。课件制作人:宋坤第八页,共四十六页,2022年,8月28日使用应用程序向导(3)这里选择Dialogbased单选项,单击Next按钮,打开MFCAppWizard—Step2of4窗口课件制作人:宋坤第九页,共四十六页,2022年,8月28日使用应用程序向导(5)单击Next按钮,打开MFCAppWizard—Step3of4窗口。

课件制作人:宋坤第十页,共四十六页,2022年,8月28日使用应用程序向导(6)单击Next按钮,打开MFCAppWizard—Step4of4窗口课件制作人:宋坤第十一页,共四十六页,2022年,8月28日使用应用程序向导(7)在MFCAppWizard—Step4of4窗口中确定类的名称及所在文件的名称,单击Finish按钮,打开NewProjectInformation窗口。

课件制作人:宋坤第十二页,共四十六页,2022年,8月28日4.2应用程序向导生成的文件文件类型典型文件举例√√课件制作人:宋坤第十三页,共四十六页,2022年,8月28日文件类型扩展名描述opt工程中关于开发环境的参数选项文件clw类向导文件信息,是按INI文件格式存储的dsp工程文件dsw工作区文件,将项目的详细情况组合到Workspace工作区中aps资源辅助文件,二进制格式plg编译信息文件,存储错误或警告信息hpj帮助文件bsc代码浏览文件,如果使用源代码浏览器,必须生成该文件map可执行文件的映像信息记录文件pch预编译文件,可以加快编译速度pdb记录了程序有关的一些数据和调试信息,在调试的时候有用exp只有在编译DLL时才会生成,记录DLL文件中的一些信息ncb无编译浏览文件,当自动完成功能出问题时可以删除此文件h头文件cpp源文件rc资源文件rc2资源文件,用来将资源包含在项目中res编译后的二进制资源文件

一般而言,VisualC++中一个类由头文件和源文件两类文件支持。头文件用于定义类,包含指明派生关系,声明成员变量及成员函数。源文件用于实现类,主要定义成员函数的实现代码和消息映射。

课件制作人:宋坤第十四页,共四十六页,2022年,8月28日典型文件举例利用MFCAppWizard[exe]向导生成一个应用程序,根据应用程序种类的不同,生成的文件也有所差异,下面将分类列举。1.应用文件(1)应用程序类文件每个MFC应用程序都需要有一个应用程序类文件,它一般与项目文件同名,例如:在默认情况下,MyProject项目应用程序类头文件为MyProject.h;源文件的文件名为“MyProject.cpp”,它们主要声明及实现应用程序类CMyProjectApp。CMyProjectApp类主要负责完成应用程序的初始化、程序的启动和程序运行结束时的清理工作。(2)资源文件在项目中,资源通过资源标识符加以区分,通常情况下,应用程序向导会把一个项目中所有资源的标识符放到Resource.h中。对资源ID的命名有一定规则,如表4-2所示。标识符前缀说

明IDR_主菜单资源、工具栏资源和快捷键资源IDD_对话框资源IDC_控件和光标IDS_字符串IDP_提示信息对话框的字符串ID_菜单命令项课件制作人:宋坤第十五页,共四十六页,2022年,8月28日典型文件举例(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类的派生类,它主要负责客户区文档数据的显示及如何进行人机交互。

课件制作人:宋坤第十六页,共四十六页,2022年,8月28日典型文件举例

3.基于对话框应用程序在默认情况下,对话框类头文件都是项目名称+“Dlg.h”组成;源文件都是项目名称+“Dlg.cpp”组成。例如:MyProject项目中对话框类头文件为MyProjectDlg.h;源文件为MyProjectDlg·cpp。它们是定义和实现对话框类CMyProjectDlg的。CMyProjectDlg类是MFC中CDialog类的派生类。它可以完成一个对话框的创建、显示等工作。

课件制作人:宋坤第十七页,共四十六页,2022年,8月28日4.3ClassWizard类向导ClassWizard的功能ClassWizard的简单应用为项目添加新类手工添加消息处理函数√√√√课件制作人:宋坤第十八页,共四十六页,2022年,8月28日ClassWizard的功能ClassWizard(类向导)主要用来定制现有的类和建立新的类,如把消息映射到类的成员函数,把一个控件与类的成员变量对应起来。只有在打开或创建一个项目后,View主菜单才会出现ClassWizard菜单项,这时才能使用ClassWizard(类向导)。一般通过<Ctrl+W>快捷键激活ClassWizard。“MFCClassWizard”对话框共有5个页面:MessageMaps页面用来处理消息映射,为消息添加或删除处理函数,查看已被处理的消息并定位消息处理代码;MemberVariables页面用来给对话框类添加或删除成员变量,这些变量必须是和某些控件资源相关联的控件类型;Automation页面提供了对OLE自动化类的属性和方法的管理;ActiveXEvents页面用于管理ActiveX类所支持的ActiveX事件;ClassInfo页面显示应用程序中所包含类的信息,如一个类的头文件、实现文件和基类信息。图4-8为“MFCClassWizard”对话框。课件制作人:宋坤第十九页,共四十六页,2022年,8月28日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所示。

课件制作人:宋坤第二十页,共四十六页,2022年,8月28日ClassWizard的简单应用

2.如何将一个控件与一个类的成员变量对应起来(1)首先,建立一个基于对话框的应用程序。(2)单击“View”/“ClassWizard”菜单命令打开“MFCClassWizard”对话框。(3)确定当前“为MemberVariables”页面,在“ControlIds”列表中找到需要对应成员变量的控件ID,例如:本教材需要为“确定”按钮添加一个对应的变量m_ButOK,需要在ControlIds”列表中双击“确定”按钮的资源ID“IDOK”,在弹出的“AddMemberVariable”对话框中找到“MemberVariableName”文本框,在此文本框中输入“m_ButOK”,单击OK按钮完成添加操作。在函数名前有“W”标志的表示消息响应函数;有“V”标志的表示虚函数。课件制作人:宋坤第二十一页,共四十六页,2022年,8月28日为项目添加新类

为项目添加新类的方法如下:(1)首先,建立一个基于对话框的应用程序。(2)单击“View”/“ClassWizard”菜单命令打开“MFCClassWizard”对话框。(3)单击右上角“AddClass”按钮,在弹出的菜单中选择“New”菜单项,弹出“NewClass”对话框,如图4-10所示。

课件制作人:宋坤第二十二页,共四十六页,2022年,8月28日为项目添加新类

(4)在“Name”文本框中添入“CNewClassName”,在“Baseclass”文本框中选择需要创建的类的基类,单击“OK”按钮,将类CNewClassName添加到项目中,在Workspace工作区中就可以对这个类进行编辑了,如图4-11所示。

课件制作人:宋坤第二十三页,共四十六页,2022年,8月28日手工添加消息处理函数

消息处理函数是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成员函数。

课件制作人:宋坤第二十四页,共四十六页,2022年,8月28日手工添加消息处理函数

(6)在Workspace中选中类CMyProjectDlg的标识,单击鼠标右键,在弹出的快捷菜单中选择“AddMemberFunction”项,打开“AddMemberFunction”对话框。(7)在“AddMemberFunction”对话框中的“FunctionType”文本框中添入函数的返回值;在“FunctionDeclaration”文本框中添入“OnNewMessage”,单击“OK”按钮,将此函数添加到项目中,如图4-13所示。

(8)这样,一个消息响应函数就做成了,当系统捕捉到“DIY_NEWMESSAGE”消息时,会自动执行OnNewMessage成员函数。

课件制作人:宋坤第二十五页,共四十六页,2022年,8月28日4.4程序调试断点跟踪调试窗口√√课件制作人:宋坤第二十六页,共四十六页,2022年,8月28日断点跟踪F9键:设置断点。<Ctrl+B>:打开断点窗口。1.设置条件断点在设计断点时,可能需要设置一个条件断点。所谓条件断点,是在变量或表达式符合断点条件时才产生中断,进入调试阶段。如图4-14所示。课件制作人:宋坤第二十七页,共四十六页,2022年,8月28日断点跟踪(1)编写一段代码,如下:intsum=0;for(inti=0;i<10;i++){sum+=i;}(2)按Ctrl+B组合键打开断点窗口,在“sum+=i”行处设置一个段点,如图4-15所示。课件制作人:宋坤第二十八页,共四十六页,2022年,8月28日断点跟踪(3)单击“Conditon”按钮,打开断点条件窗口,在该窗口中设置断点条件,如图4-16所示。

(4)运行程序,执行代码,当变量i等于2时将产生中断,如图4-17所示。

课件制作人:宋坤第二十九页,共四十六页,2022年,8月28日断点跟踪

2.设置数据断点数据断点只能在Breakpoints对话框中设置。选择“Data”选项卡,就显示了设置数据断点的对话框。在编辑框中输入一个表达式,当这个表达式的值发生变化时,数据断点就到达。一般情况下,这个表达式应该由运算符和全局变量构成。(1)定义一个全局变量,并编写一段代码,如下:voidCDebugDlg::OnOK(){intsum=0;for(i=0;i<10;i++)//i为一个整型全局变量{sum+=i;}}(2)按Ctrl+B组合键打开断点窗口,选择“Data”选项卡,在编辑框中输入全局变量i,如图4-18所示。课件制作人:宋坤第三十页,共四十六页,2022年,8月28日断点跟踪(3)单击OK按钮保存设置。运行程序,当程序试图改变变量i的值时将产生中断,进入调试阶段,如图4-19所示。(4)单击“确定”按钮,程序将停留在“改变i值”的代码处,如图4-20所示。

课件制作人:宋坤第三十一页,共四十六页,2022年,8月28日断点跟踪3.设置消息断点VisualC++也支持对Windows消息进行截获,有两种方式进行截获:窗口消息处理函数和特定消息中断。在“Breakpoints”对话框中选择“Messages”选项卡,就可以设置消息断点。如果采用窗口消息处理方式,那么每次消息被这个函数处理,断点就到达;如果采用特定消息中断方式,则每次指定的消息到达,程序就中断。(1)按<Ctrl+B>组合键打开断点窗口,选择“Messages”选项卡,如图4-21所示。

(2)在上方的组合框中输入窗口过程“AfxWndProc”,在下方的组合框中输入产生中断的消息,例如“WM-LBVTTONOOWN”,如图4-22所示。课件制作人:宋坤第三十二页,共四十六页,2022年,8月28日断点跟踪(3)运行程序,当用户单击鼠标左键时将产生中断,如图4-23所示。

课件制作人:宋坤第三十三页,共四十六页,2022年,8月28日断点跟踪(4)单击“确定”按钮,程序将停留在AfxWndProc处,如图4-24所示。4.断点跟踪前面本教材介绍了设置断点的方法,下面介绍如何利用断点跟踪程序。(1)编写一段代码,并在代码处设置一个断点,如图4-25所示。课件制作人:宋坤第三十四页,共四十六页,2022年,8月28日断点跟踪(2)运行程序,执行断点所在的函数,程序将停留在断点处,如图4-26所示。

课件制作人:宋坤第三十五页,共四十六页,2022年,8月28日断点跟踪(3)按<F10>键执行当前行代码,指针将移动到下一行代码,同时sum的值被设置为0,用户可以通过鼠标或调试窗口查看变量的值,如图4-27所示。

课件制作人:宋坤第三十六页,共四十六页,2022年,8月28日断点跟踪(4)按<F10>键连续执行代码,直到当前指针停留在“total=Add(10,2)”语句处,如图4-28所示。课件制作人:宋坤第三十七页,共四十六页,2022年,8月28日断点跟踪(5)当前代码涉及一个函数调用(Add函数),如果用户按<F10>键,当前指针不会进入Add函数而继续向下执行;如果用户按<F11>键,当前指针会进入Add函数,在Add函数执行后重新返回被调用的函数处。按<F11>键进入Add函数,如图4-29所示。课件制作人:宋坤第三十八页,共四十六页,2022年,8月28日断点跟踪课件制作人:宋坤第三十九页,共四十六页,2022年,8月28日调试窗口

1.Watch调试窗口Watch窗口主要用来查看变量或对象的信息。用户可以通过单击“View”/“DebugWindows”/“Watch”菜单项或者按<Alt+3>组合键打开Watch窗口,为了查看某个变量或对象的值,在程序处于中断时,用户可以利用鼠标将其拖动到Watch窗口中,这样,在Watch窗口中将显示变量或对象的详细信息,如图4-30所示。

2.CallStack窗口CallStack窗口能够查看当前函数的调用信息。例如函数的参数信息,调用当前函数的参数等。CallStack窗口如图4-31所示。

课件制作人:宋坤第四十页,共四十六页,2022年,8月28日调试窗口

从图4-31中可以看出当前函数为Add,参数值分别为10、20,在InitInstance方法中调用了Add方法。当用户在CallStack窗口中双击InitInstance方法时,代码编辑器将进入到InitInstance方法,并显示在该方法何处调用了Add方法,如图4-32所示。

3.Memory窗口Memory窗口用于显示某个地址开始处的内存信息,默认地址为0x00000000。用户可以通过单击“View”/“DebugWindows”/“Memory”菜单项或者按<Alt+6>组合键打开Memory窗口,如图4-33所示。课件制作人:宋坤第四十一页,共四十六页,2022年,8月28日调试窗口

在调试程序时,使用Memory窗口查看某个对象或变量的地址信息及值信息。例如,将某个变量拖动到Memory窗口的列表中,在

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论