第4章 创建应用程序框架2.ppt

上传人:hyn****60 文档编号:82870572 上传时间:2023-03-26 格式:PPT 页数:79 大小:2.14MB
返回 下载 相关 举报
第4章 创建应用程序框架2.ppt_第1页
第1页 / 共79页
第4章 创建应用程序框架2.ppt_第2页
第2页 / 共79页
点击查看更多>>
资源描述

《第4章 创建应用程序框架2.ppt》由会员分享,可在线阅读,更多相关《第4章 创建应用程序框架2.ppt(79页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、l 应用程序框架应用程序框架l 应用程序向导应用程序向导l 应用程序向导生成的文件应用程序向导生成的文件l ClassWizard类向导类向导l 程序调试程序调试本章内容本章内容通过本章的学习我们可以真通过本章的学习我们可以真正利用正利用Visual C+Visual C+创建一个创建一个简单的简单的 MFC MFC 应用程序。应用程序。同同一一类类型型应应用用程程序序的的结结构构大大致致相相同同,并并有有很很多多相相同同的的源源代代码码,因因 此此 可可 以以 通通 过过 一一 个个 应应 用用 程程 序序 框框 架架 AFX(Application FrameWorks)编写同一类型应用程

2、序的通用源代码。编写同一类型应用程序的通用源代码。何谓应用程序框架?何谓应用程序框架?4.1 应用程序向导应用程序向导l与与其其它它可可视视化化开开发发工工具具一一样样,Visual C+提提供供了了创创建建应应用用程程序序框架的向导框架的向导AppWizard和相关的开发工具。和相关的开发工具。l在在可可视视化化开开发发环环境境下下,生生成成一一个个应应用用程程序序要要做做的的工工作作主主要要包包括括编编写写源源代代码码、添添加加资资源源和和设设置置编编译译方方式式。向向导导实实质质上上是是一一个个源源代代码码生生成成器器,利利用用应应用用程程序序向向导导可可以以快快速速创创建建各各种种风风

3、格格的的应应用用程程序序框框架架,自自动动生生成成程程序序通通用用的的源源代代码码,这这样样大大大大减减轻轻了了手手工工编写代码的工作量。编写代码的工作量。l即即使使不不熟熟悉悉Visual C+编编程程,也也可可以以利利用用它它的的应应用用程程序序向向导导一一个简单的应用程序。个简单的应用程序。创创建建一一个个应应用用程程序序,首首先先要要创创建建一一个个项项目目。项项目目用用于于管管理理组组成成应应用程序的所有元素,并由它生成应用程序。用程序的所有元素,并由它生成应用程序。Visual C+集集成成开开发发环环境境包包含含了了创创建建各各种种类类型型应应用用程程序序的的向向导导,执行执行F

4、ile菜单中的菜单中的New命令即可看到向导类型。命令即可看到向导类型。Visual C+集成开发环境中主要向导类型:集成开发环境中主要向导类型:4.1.1 Visual C+向导的类型向导的类型lDatebase Project:创建数据库项目创建数据库项目lMFC ActiveX Control Wizard:创建基于创建基于MFC的的ActiveX控件控件lMFC AppWizarddll:创建基于创建基于MFC的动态链接库的动态链接库lMFC AppWizardexe:创建基于创建基于MFC的应用程序(最常用)的应用程序(最常用)lNew Database Wizard:在在SQL服务

5、器上创建一个服务器上创建一个SQL Server数据库数据库lWin32 Application:创建创建Win32应用程序,可不使用应用程序,可不使用MFC,采用采用API方法方法编程编程lWin32 Console Application:创建创建DOS下的下的Win32控制台应用程序,采用控制台应用程序,采用C+或或C语言进行编程语言进行编程lWin32 Dynamic-link Library:创建创建Win32动态链接库,采用动态链接库,采用API方法方法lWin32 Static Library:创建创建Win32静态链接库,采用静态链接库,采用API方法方法4.1.2 MFC A

6、ppWizard的使用步骤的使用步骤引入应用程序向导的目的:引入应用程序向导的目的:区区别别于于DOS程程序序,即即使使一一个个简简单单的的Windows程程序序,它它也也必必须须显显示示一一个个程程序序运运行行窗窗口口,需需要要编编写写复复杂杂的的程程序序代代码码。而而同同一一类类型型应应用用程程序序的的框框架架窗窗口口风风格格是是相相同同的的,如如相相同同的的菜菜单单栏栏、工工具具栏栏、状状态态栏栏和和用用户户区区。并并且且,基基本本菜菜单单命命令令的的功功能能也也是是一一样样的的,如如相相同同的的文文件件操操作作和和编编辑辑命命令令。所所以以,同同一一类类型型应应用用程程序序建建立立框框

7、架架窗窗口口的的基基本本代代码码都都是是一一样样的的,尽尽管管有有些些参参数数不不尽尽相相同同。为为了了避避免免程程序序员员重重复复编编写写这这些些代代码码,一一般般的的可可视视化化软软件件开开发发工工具都提供了创建具都提供了创建Windows应用程序框架的向导。应用程序框架的向导。例例4_1:编写一个单文档应用程序:编写一个单文档应用程序Mysdi,程序运行后在程序视图程序运行后在程序视图窗口显示信息窗口显示信息“这是一个单文档程序!这是一个单文档程序!”。l在在Visual C+中执行中执行File|New命令,出现命令,出现New对话框。对话框。l确认确认New对话框的当前页面为对话框的

8、当前页面为Project,在左栏的项目类型列表框中在左栏的项目类型列表框中选择选择MFC AppWizardexe项,在项,在Project Name框输入要创建项目框输入要创建项目的名称的名称。在在Location栏中输入项目所在的目录,可单击右侧栏中输入项目所在的目录,可单击右侧“”浏览按钮来对默认的目录进行修改。向导将在该目录下存放项目的浏览按钮来对默认的目录进行修改。向导将在该目录下存放项目的所有文件。单击所有文件。单击OK按钮出现按钮出现MFC AppWizard-Step1对话框。对话框。在在MFC AppWizard-Step1对话框中选择应用程序的类型。对话框中选择应用程序的类

9、型。lSingle document:单单文文档档界界面面应应用用程程序序,程程序序运运行行后后出出现现标标准准的的Windows界界面面,它它由由框框架架(包包括括菜菜单单栏栏、工工具具栏栏和和状状态态栏栏)和和用用户户区区组组成成。并并且且程程序序运运行行后后一一次次只只能能打打开开一一个个文文档档,如如Windows自自带带的记事本的记事本Notepad。lMultiple documents:多多文文档档界界面面应应用用程程序序,程程序序运运行行后后出出现现标标准的准的Windows界面,并且可以同时打开多个文档,如界面,并且可以同时打开多个文档,如Word。lDialog based

10、:基基于于对对话话框框的的应应用用程程序序,程程序序运运行行后后首首先先出出现现一一个对话框界面,如计算器个对话框界面,如计算器Calculator。lNone:向向导导创创建建的的应应用用程程序序不不包包括括对对数数据据库库的的操操作作功功能能,但但以以后后可可以手工添加对数据库的操作代码(以手工添加对数据库的操作代码(默认项默认项)。)。lHeader files only:提提供供了了最最简简单单的的数数据据库库支支持持,仅仅在在项项目目的的stdAfx.h文文件件中中使使用用#include指指令令包包含含afxdb.h和和afxdao.h两两个个用用于于定定义义数数据据库库类类的的头

11、头文文件件,但但并并不不生生成成与与数数据据库库相相关关的的类类,用用户户需需要要时可以自己生成。时可以自己生成。lDatabase view without file support:包包含含了了所所有有的的数数据据库库头头文文件件,并并生生成成了了相相关关的的数数据据库库类类和和视视图图类类,但但不不支支持持文文档档的的序序列列化化,向向导导创创建建的的应应用用程程序序的的File主主菜菜单单中中将将不不包包含含有有关关文文件件操操作作的的菜菜单单命命令令项。项。l Database view with file support:包包含含了了所所有有的的数数据据库库头头文文件件,生生成了相

12、关的数据库类和视图类,支持文档的序列化。成了相关的数据库类和视图类,支持文档的序列化。在在MFC AppWizard-Step 2 of 6选择应用程序所支持的数据库方式:选择应用程序所支持的数据库方式:lNone:应用程序不支持任何复合文档(应用程序不支持任何复合文档(默认项默认项)。)。lContainer:应应用用程程序序作作为为复复合合文文档档容容器器,能能容容纳纳所所嵌嵌入入或或链链接接的的复合文档对象。复合文档对象。lMini-server:微微型型复复合合文文档档服服务务器器,应应用用程程序序可可以以创创建建和和管管理理复复合合文文档档对对象象,但但对对于于它它所所创创建建的的复

13、复合合文文档档对对象象,集集成成应应用用程程序序可可以以嵌嵌入入,但但不不能能链链接接。微微型型服服务务器器不不能能作作为为一一个个单单独独的的程程序序运运行行,而而只只能由集成应用程序来启动。能由集成应用程序来启动。lFull-server:完完全全复复合合文文档档服服务务器器,除除了了具具备备上上面面微微型型服服务务器器的的功功能外,应用程序支持链接式对象,并可作为一个单独的程序运行。能外,应用程序支持链接式对象,并可作为一个单独的程序运行。lBoth container and server:应应用用程程序序既既可可作作为为一一个个复复合合文文档档容容器器,又可作为一个可单独运行的复合文

14、档服务器。又可作为一个可单独运行的复合文档服务器。在在MFC AppWizard-Step 3 of 6选择应用程序所支持的选择应用程序所支持的复合复合文档类型:文档类型:lDocking toolbar:应用程序具有标准的工具栏(应用程序具有标准的工具栏(默认项默认项)lInitial status bar:应用程序具有标准的状态栏(应用程序具有标准的状态栏(默认项默认项)lPrinting and print preview:应应用用程程序序支支持持打打印印和和打打印印预预览览功功能能(默认项默认项)lContext-sensitive Help:应用程序具有上下文相关帮助功能应用程序具有

15、上下文相关帮助功能l3D controls:应用程序界面具有三维外观(应用程序界面具有三维外观(默认项默认项)lMAPI:应用程序具有发送电子邮件的功能:应用程序具有发送电子邮件的功能lWindows Sockets:应用程序能使用套接字,支持:应用程序能使用套接字,支持TCP/IP协议协议lNormal:应用程序采用传统风格的工具栏(应用程序采用传统风格的工具栏(默认项默认项)lInternet Explorer ReBars:应用程序采用应用程序采用IE风格的工具栏风格的工具栏lHow many files would you like on your recent file list:在

16、在File主主菜菜单单可列出文档的最多个数可列出文档的最多个数lAdvanced按按钮钮:进进行行更更高高一一级级的的设设置置,如如修修改改文文件件名名或或扩扩展展名名,调调整程序用户界面窗口的样式整程序用户界面窗口的样式在在MFC AppWizard-Step 4 of 6设置应用程序界面特征:设置应用程序界面特征:lMFC Standard:应用程序采用应用程序采用MFC标准风格标准风格(默认项默认项)lWindows Explorer:应用程序采用应用程序采用Windows资源管理器风格资源管理器风格l选择向导是否为源代码生成选择向导是否为源代码生成注释注释l设置设置MFC库与应用程序的

17、库与应用程序的链接方式链接方式:(1)As a shared DLL:采采用用共共享享动动态态链链接接库库的的方方式式(默默认认项项),即即在在程程序序运运行行时时才才调调用用MFC库库。采采用用此此方方式式可可减减少少应应用用程程序序的的代代码码长度。长度。(2)As a statically linked library:采采用用静静态态链链接接库库的的方方式式,即即在在编编译译时时把把MFC库库与与应应用用程程序序相相链链接接。采采用用此此方方式式能能提提高高运运行行速速度度,且不用考虑程序最终运行环境中是否安装了且不用考虑程序最终运行环境中是否安装了MFC库。库。在在MFC AppWi

18、zard-Step 5 of 6设置项目的风格设置项目的风格:在在MFC AppWizard-Step 6 of 6,列出了向导将创建的类,用户可,列出了向导将创建的类,用户可以修改一些类默认的类名和对应的头文件名、实现文件名。对某些类以修改一些类默认的类名和对应的头文件名、实现文件名。对某些类还可以选择不同的还可以选择不同的基类基类。在在New Project Information对话框,根据用户在前面各步所做的对话框,根据用户在前面各步所做的选择列出将要创建的应用程序的有关信息,如应用程序的类型、创建选择列出将要创建的应用程序的有关信息,如应用程序的类型、创建的类和文件名、应用程序的特征

19、以及项目所在的目录。若要修改这些的类和文件名、应用程序的特征以及项目所在的目录。若要修改这些内容,可单击内容,可单击Cancel按钮返回到前一个对话框。单击按钮返回到前一个对话框。单击OK按钮,按钮,MFC AppWizardexe向导将开始创建应用程序框架。向导将开始创建应用程序框架。当应用程序框架创建成功后,当应用程序框架创建成功后,Developer Studio将装入应用程序项将装入应用程序项目,并在项目工作区窗口打开这个项目。值得说明的是,若想在同一目,并在项目工作区窗口打开这个项目。值得说明的是,若想在同一个目录下重新创建一个同名的项目,必须首先将原来的项目删除或移个目录下重新创建

20、一个同名的项目,必须首先将原来的项目删除或移走。走。利用利用MFC AppWizardexe向导创建应用程序向导创建应用程序Mysdi的框架后,用的框架后,用户无需添加任何代码,就可以对程序进行编译、链接,生成一个应用户无需添加任何代码,就可以对程序进行编译、链接,生成一个应用程序。但一般情况下,用户应根据程序具体功能需要,利用程序。但一般情况下,用户应根据程序具体功能需要,利用Developer Studio中的集成工具向应用程序框架添加具体的代码。中的集成工具向应用程序框架添加具体的代码。void CMysdiView:OnDraw(CDC*pDC)CMysdiDoc*pDoc=GetDo

21、cument();ASSERT_VALID(pDoc);/TODO:add draw code for native data herepDC-TextOut(100,100,“这是一个单文档程序!这是一个单文档程序!”);/在坐标在坐标(100,100)处显示文本串处显示文本串 执执行行Build(F7)命命令令编编译译链链接接程程序序,程程序序运运行行后后将将在在程程序序视视图区域显示文本串。图区域显示文本串。P140P140表表4-14-1在视图类的成员函数在视图类的成员函数OnDraw()中实现屏幕输出中实现屏幕输出例例4_2:编编写写一一个个基基于于对对话话框框的的应应用用程程序序M

22、yDialog,程程序序运运行行后后显示一个对话框。显示一个对话框。编程说明与实现:编程说明与实现:1.执执 行行 File|New命命 令令,在在 New对对 话话 框框 中中 选选 择择 MFC AppWizardexe项项,输输入入程程序序名名MyDialog。单单击击OK按按钮钮,出出现现MFC AppWizard-Step 1。2.在在MFC AppWizard-Step 1中中选选择择Dialog Based选选项项,单单击击Next按钮,出现按钮,出现MFC AppWizard-Step 2 of 4。3.在在MFC AppWizard-Step 2 of 4中设置应用程序界面特

23、征。中设置应用程序界面特征。4.创创建建对对话话框框应应用用程程序序后后续续的的步步骤骤与与创创建建单单文文档档或或多多文文档档应用程序的应用程序的Step 5和和Step 6 相同。相同。利利用用Visual C+编编写写Windows应应用用程程序序可可以以采采取取几几种种不不同同的途径:的途径:l 利用利用 Win32 应用程序接口应用程序接口 API(Application Programming Interface)提供的函数,用提供的函数,用C或或C+语言编写程序。语言编写程序。l 由于由于 MFC 通过类对通过类对API的绝大部分功能进行了封装,可以的绝大部分功能进行了封装,可以

24、利用利用 MFC,用,用 C+语言编写程序。语言编写程序。l利用利用 MFC 和和 MFC AppWizardexe,首先利用首先利用 MFC AppWizardexe 应用程序向导生成基本的应用程序框架,然应用程序向导生成基本的应用程序框架,然后按照后按照 MFC 机制和原理向框架添加具体的应用代码。机制和原理向框架添加具体的应用代码。4.1.3 MFC应用程序的开发流程应用程序的开发流程 l根根据据应应用用程程序序特特性性在在MFC AppWizardexe应应用用程程序序向向导导各各步骤对话框中进行选择,创建一个应用程序的框架。步骤对话框中进行选择,创建一个应用程序的框架。l利利用用资资

25、源源编编辑辑器器为为程程序序编编辑辑或或添添加加资资源源,如如编编辑辑菜菜单单、添添加对话框等。加对话框等。l利利用用ClassWizard类类向向导导或或手手工工添添加加类类、成成员员变变量量和和成成员员函函数的声明。数的声明。l根据需要编写具体的函数代码。根据需要编写具体的函数代码。l编编译译、链链接接程程序序。如如果果程程序序有有语语法法错错误误,需需要要修修改改源源程程序序。直到没有编译、链接错误,才能得到可执行程序。直到没有编译、链接错误,才能得到可执行程序。l测测试试应应用用程程序序各各项项功功能能,如如果果程程序序没没有有实实现现程程序序设设计计所所要要求求的的功功能能,启启动动

26、Debug调调试试器器进进行行调调试试,找找出出并并修修改改程程序序设设计中的逻辑错误。计中的逻辑错误。编写一个实现具体功能的编写一个实现具体功能的MFC应用程序的步骤:应用程序的步骤:ClassWizard类向导:类向导:Visual C+IDE为为MFC提提供供了了大大量量的的支支持持工工具具,除除了了MFC AppWizardexe向向导导,还还提提供供了了ClassWizard类类向向导导,利利用用它它程程序员可以方便地增加或删除对某个消息的处理。序员可以方便地增加或删除对某个消息的处理。资源编辑器:资源编辑器:为程序添加具体的代码时还经常要用到为程序添加具体的代码时还经常要用到资源编

27、辑器资源编辑器。下下图图形形象象地地说说明明了了编编写写一一个个MFC应应用用程程序序的的流流程程、所所用用到到的工具及主要生成的文件。的工具及主要生成的文件。CLWCLW 编编程程时时,除除了了编编辑辑现现有有的的资资源源,有有时时需需要要向向项项目目添添加加新新的的资源,这时可以利用资源,这时可以利用Insert菜单创建一个新的资源。菜单创建一个新的资源。打打 开开 Insert菜菜 单单,选选 择择 Resource菜菜 单单 项项,出出 现现 Insert Resource对对话话框框,如如下下图图所所示示,在在Resource Type框框中中选选择择一一个个资源类型,单击资源类型,

28、单击New按钮即可向项目添加一个资源。按钮即可向项目添加一个资源。MFC类类库库将将所所有有图图形形用用户户界界面面的的元元素素如如窗窗口口、菜菜单单和和按按钮钮等等都都以以类类的的形形式式进进行行了了封封装装,编编程程时时需需要要利利用用C+类类的的继继承承性性从从MFC类类中中派派生生出出自自己己的的类类,实实现现标标准准Windows应应用用程程序的功能。序的功能。MFC AppWizardexe向向导导对对Windows应应用用程程序序进进行行了了分分解解,并并利利用用MFC的的派派生生类类对对应应用用程程序序重重新新进进行行了了组组装装,同同时时还还规规定定了了应应用用程程序序中中所

29、所用用到到的的MFC派派生生类类对对象象之之间间的的相相互互联联系系,这这就就是是向向导导生生成成的的MFC应应用用程程序序框框架架。MFC应应用用程程序序框框架架实实质质上上是是一一个个标标准准的的Windows应应用用程程序序,它它具具有有标标准准的的窗窗口、菜单栏和工具栏。口、菜单栏和工具栏。4.2 应用程序向导生成的文件应用程序向导生成的文件 为为了了生生成成一一个个可可执执行行程程序序,MFC AppWizardexe向向导导必必须须首首先先创创建建一一个个项项目目,并并为为项项目目生生成成一一系系列列初初始始文文件件,如如C+头头文文件件、C+源源文文件件、资资源源文文件件和和项项

30、目目文文件件,其其中中的的C+文文件件都是以都是以MFC派生类为单元来组织的。派生类为单元来组织的。Visual C+中中的的文文件件类类型型很很多多,根根据据项项目目类类型型不不同同而而产产生生不不同同类类型型的的文文件件。下下面面列列出出了了MFC AppWizardexe应应用用程程序序向向导导生生成成的的文文件件类类型型。当当进进行行编编辑辑、编编译译和和链链接接时时,还还要要生生成成一些临时文件。一些临时文件。4.2.1 应用程序向导生成的文件类型应用程序向导生成的文件类型 MFC AppWizardexe向导生成的文件类型向导生成的文件类型后缀后缀类型类型说明说明dsw工作区文件工

31、作区文件将项目的详细情况组合到工作区中将项目的详细情况组合到工作区中dsp项目文件项目文件存储项目的详细情况并替代存储项目的详细情况并替代mak文件文件hC+头文件头文件存储类的定义代码存储类的定义代码cppC+源文件源文件存储类的成员函数的实现代码存储类的成员函数的实现代码rc资源脚本文件资源脚本文件存储菜单、工具栏和对话框等资源存储菜单、工具栏和对话框等资源rc2资源文件资源文件用来将资源包含到项目中用来将资源包含到项目中ico图标文件图标文件存储应用程序图标存储应用程序图标bmp位图文件位图文件存储位图存储位图clw类向导文件类向导文件存储存储ClassWizard类向导使用的类信息类向

32、导使用的类信息ncb没有编译的浏览文件没有编译的浏览文件保留保留ClassView和和ClassWizard使用的详细情况使用的详细情况opt可选项文件可选项文件存储自定义的存储自定义的WorkSpace工作区中的显示情况工作区中的显示情况一般而言,一般而言,C+中的一个类由中的一个类由头文件头文件h和和源文件源文件cpp两类文件支持。两类文件支持。头文件用于定义类,包括指明派生关系、声明成员变量和函数。头文件用于定义类,包括指明派生关系、声明成员变量和函数。源文件用于实现类,主要定义成员函数的实现代码和消息映射。源文件用于实现类,主要定义成员函数的实现代码和消息映射。例例如如,应应用用程程序

33、序视视图图类类CMysdiView的的两两个个支支持持文文件件是是MysdiView.h和和MysdiView.cpp。l MFC AppWizardexe向导为一般的向导为一般的SDI应用程序生成了五个类,应用程序生成了五个类,这些类都是这些类都是MFC类的派生类。这里的类的派生类。这里的“一般的一般的SDI应用程序应用程序”是指向是指向导每一步都采用默认选项,如不支持数据库和导每一步都采用默认选项,如不支持数据库和OLE对象等。对象等。l 一般应用程序框架中所有类的名字由一般应用程序框架中所有类的名字由MFC AppWizardexe向导根向导根据一定的规则自动命名,但用户可以在向导的第据

34、一定的规则自动命名,但用户可以在向导的第6步改变类名和有关步改变类名和有关类的文件名。应用程序框架中类(框架窗口类例外)的命名规则一般类的文件名。应用程序框架中类(框架窗口类例外)的命名规则一般遵照如下要求:遵照如下要求:Class Name=C+ProjectName+ClassType4.2.2 应用程序向导生成的头文件应用程序向导生成的头文件 除除了了CAboutDlg类类,应应用用程程序序向向导导为为框框架架窗窗口口类类、文文档档类类、视图类和应用程序类等视图类和应用程序类等4个类生成了头文件。个类生成了头文件。注注:在在定定义义类类的的头头文文件件中中的的开开始始位位置置(类类的的正

35、正式式定定义义前前)有有一一段段预预处处理理命命令令代代码码,这这些些代代码码是是为为Developer Studio自自身身准准备备的的,如如用用于于保保证证头头文文件件在在编编译译时时仅仅被被编编译译一一次次。Developer Studio中中的的资资源源编编辑辑器器、ClassWizard类类向向导导和和编编译译器都可能用到这些代码。这些代码如下形式所示:器都可能用到这些代码。这些代码如下形式所示:#if!defined(AFX_MAINFRM_H_4A1FE89D_3AF4_4C81_8341_EB0D3FE4E5D1_INCLUDED_)#define AFX_MAINFRM_H_

36、4A1FE89D_3AF4_4C81_8341_EB0D3FE4E5D1_INCLUDED_#if _MSC_VER 1000#pragma once#endif/_MSC_VER 1000l向向导导为为项项目目Mysdi生生成成了了框框架架窗窗口口类类的的头头文文件件MainFrm.h,该该头头文文件件用用于于定定义义框框架架窗窗口口类类CMainFrame。不不同同的的SDI应应用用程程序,其框架窗口类名和文件名是统一的。序,其框架窗口类名和文件名是统一的。lCMainFrame类类是是MFC的的CFrameWnd类类的的派派生生类类,它它主主要要负责创建标题栏、菜单栏、工具栏和状态栏负责

37、创建标题栏、菜单栏、工具栏和状态栏。lCMainFrame类类中中声声明明了了框框架架窗窗口口中中的的工工具具栏栏m_wndToolBar、状态栏状态栏m_wndStatusBar两个成员变量和四个成员函数。两个成员变量和四个成员函数。1.框架窗口类头文件框架窗口类头文件 向向导导为为项项目目Mysdi生生成成了了文文档档类类的的头头文文件件MysdiDoc.h,该该头头文文件件用用于于定定义义文文档档类类CMysdiDoc。CMysdiDoc类类是是MFC的的CDocument类类的的派派生生类类,它它主主要要负负责责应应用用程程序序数数据据的的保保存存和和装装载,实现文档的序列化功能载,实

38、现文档的序列化功能。2.文档类头文件文档类头文件 l向向导导为为项项目目Mysdi生生成成了了视视图图类类的的头头文文件件MysdiView.h,该该头头文文件件用用于于定定义义视视图图类类CMysdiView。视视图图类类用用于于处处理理客客户户区区窗窗口,它是框架窗口中的一个子窗口。口,它是框架窗口中的一个子窗口。lCMysdiView类类是是MFC的的CView类类的的派派生生类类,它它主主要要负负责责客客户户区文档数据的显示,以及如何进行人机交互区文档数据的显示,以及如何进行人机交互。3.视图类头文件视图类头文件 向向导导为为项项目目Mysdi生生成成了了应应用用程程序序类类的的头头文

39、文件件Mysdi.h,该该头头文文件件用用于于定定义义应应用用程程序序类类CMysdiApp。CMysdiApp类类是是MFC的的CWinApp类类的的派派生生类类,它它主主要要负负责责完完成成应应用用程程序序的的初初始化、程序的启动和程序运行结束时的清理工作始化、程序的启动和程序运行结束时的清理工作。4.应用程序类头文件应用程序类头文件 l在在项项目目中中,资资源源通通过过资资源源标标识识符符加加以以区区别别,通通常常将将一一个个项项目目中所有的资源标识符放在头文件中所有的资源标识符放在头文件Resource.h中定义。中定义。l向向导导为为项项目目Mysdi生生成成了了资资源源头头文文件件

40、Resource.h,该该文文件件用用于于定义项目中所有的资源标识符,给资源定义项目中所有的资源标识符,给资源ID分配一个整数值分配一个整数值。l标标识识符符的的命命名名有有一一定定的的规规则则,如如IDR_MAINFRAME代代表表有有关关主主框框架架的的资资源源,包包括括主主菜菜单单、工工具具栏栏及及图图标标等等。标标识识符符以以不同的前缀开始,见下表。不同的前缀开始,见下表。5.资源头文件资源头文件 IDR_主菜单、工具栏、应用程序图标和快捷键表主菜单、工具栏、应用程序图标和快捷键表IDD_对话框对话框IDC_控件和光标控件和光标IDS_字符串字符串IDP_提示信息对话框的字符串提示信息

41、对话框的字符串ID_菜单命令项菜单命令项l向向导导为为项项目目Mysdi生生成成了了标标准准包包含含头头文文件件StdAfx.h,该该文文件件用用于于包包含含一一般般情情况况下下要要用用到到且且不不会会被被修修改改的的头头文文件件,如如MFC类类的的声声明明文文件件afxwin.h、使使用用工工具具栏栏和和状状态态栏栏的的文文件件afxext.h,这这 些些 头头 文文 件件 一一 般般 都都 存存 放放 在在 路路 径径“Microsoft Visual StudioVC98MFCInclude”下。下。lStdAfx.h文件和文件和StdAfx.cpp文件用来生成预编译文件。文件用来生成预

42、编译文件。6.标准包含头文件标准包含头文件 l对对应应于于一一个个头头文文件件中中定定义义的的类类,都都有有一一个个类类的的实实现现源源文文件件。在在实实现现文文件件中中主主要要定定义义在在头头文文件件中中声声明明的的成成员员函函数数的的实实现现代代码码和和消消息息映映射射。MFC AppWizardexe生生成成的的实实现现文文件件也也包包括六种。括六种。l值值得得说说明明的的是是,向向导导生生成成的的成成员员函函数数有有很很多多,不不要要因因为为没没有有使使用用某某个个成成员员函函数数而而删删除除其其声声明明和和实实现现代代码码。并并且且,用用户户一一般般不不要要轻轻易易修修改改文文件件中

43、中那那些些以以灰灰色色字字体体显显示示的的代代码码,因因为为这这些代码是通过资源编辑器或些代码是通过资源编辑器或ClassWizard类向导进行维护的。类向导进行维护的。4.2.3 应用程序向导生成的源文件应用程序向导生成的源文件 向向导导为为项项目目Mysdi生生成成了了框框架架窗窗口口类类的的实实现现文文件件Mainfrm.cpp,该该文文 件件 包包 含含 了了 窗窗 口口 框框 架架 类类 CMainFrame的的 实实 现现 代代 码码,主主 要要 是是CMainFrame类类成成员员函函数数的的实实现现,它它实实现现的的框框架架窗窗口口是是应应用用程程序序的的主主窗口。窗口。1.框

44、架窗口类源文件框架窗口类源文件CMainFrame类的四个主要成员函数:类的四个主要成员函数:lAssertValid():诊断诊断CMainFrame对象是否有效,调试用。对象是否有效,调试用。lDump():输出输出CMainFrame对象的状态信息,调试用。对象的状态信息,调试用。lOnCreate():响响应应WM_CREATE的的消消息息处处理理函函数数。创创建建工工具具栏栏m_wndToolBar和和状状态态栏栏m_wndStatusBar。而而视视图图窗窗口口是是由由基基类类CFrameWnd的的成成员员函函数数OnCreate()通通过过调调用用OnCreateClient()

45、函函数数创创建的。建的。l PreCreateWindow():如如果果要要创创建建一一个个非非默默认认风风格格的的窗窗口口,可可以以重重载载该该函函数数(虚虚函函数数),在在函函数数中中通通过过修修改改CREATESTRUCT结结构构参参数数cs来改变窗口类、窗口风格、窗口大小和位置等。来改变窗口类、窗口风格、窗口大小和位置等。virtual BOOL PreCreateWindow(CREATESTRUCT&cs);CREATESTRUCTCREATESTRUCT结构定义了创建函数创建窗口所用的初始参数,结构定义了创建函数创建窗口所用的初始参数,其定义如下:其定义如下:typedef st

46、ruct tagCREATESTRUCT LPVOID lpCreateParams;/创建窗口的基本参数创建窗口的基本参数HANDLE hInstance;/拥有将创建的窗口的模块实例句柄拥有将创建的窗口的模块实例句柄HMENU hMenu;/新窗口的菜单句柄新窗口的菜单句柄HWND hwndParent;/新窗口的父窗口句柄新窗口的父窗口句柄int cy;/新窗口的高度新窗口的高度int cx;/新窗口的宽度新窗口的宽度int y;/新窗口的左上角新窗口的左上角Y坐标坐标int x;/新窗口的左上角新窗口的左上角X坐标坐标LONG style;/新窗口的风格新窗口的风格LPCSTR lps

47、zName;/新窗口的名称新窗口的名称LPCSTR lpszClass;/新窗口的窗口类名新窗口的窗口类名DWORD dwExStyle;/新窗口的扩展参数新窗口的扩展参数 CREATESTRUCT;BOOL CMainFrame:PreCreateWindow(CREATESTRUCT&cs)if(!CFrameWnd:PreCreateWindow(cs)return FALSE;/TODO:Modify the Window class or styles here by modifying/the CREATESTRUCT cs/修改主窗风格修改主窗风格cs.style&=FWS_AD

48、DTOTITLE;/去除标题条中的文档名去除标题条中的文档名cs.style&=WS_THICKFRAME;/去除可改变大小的边框去除可改变大小的边框cs.style|=WS_DLGFRAME;/增加不能改变大小的边框增加不能改变大小的边框/确定主窗的大小和初始位置确定主窗的大小和初始位置int cxScreen=:GetSystemMetrics(SM_CXSCREEN);/获得屏幕宽获得屏幕宽int cyScreen=:GetSystemMetrics(SM_CYSCREEN);/获得屏幕高获得屏幕高cs.x=0;/主窗位于左上角主窗位于左上角cs.y=0;cs.cx=cxScreen/2

49、;/主窗宽为主窗宽为1/2屏幕宽屏幕宽cs.cy=cyScreen/2;/主窗高为主窗高为1/2屏幕高屏幕高return TRUE;在项目工作区在项目工作区ClassView页面打开页面打开CMainFrame类,双击成类,双击成员函数员函数PreCreateWindow()在编辑窗口打开该函数,添加代码:在编辑窗口打开该函数,添加代码:例例4_3:修改程序:修改程序Mysdi,使程序运行窗口没有最大化按钮。使程序运行窗口没有最大化按钮。BOOL CMainFrame:PreCreateWindow(CREATESTRUCT&cs)if(!CFrameWnd:PreCreateWindow(c

50、s)return FALSE;/TODO:Modify the Window class or styles here cs.style&=WS_MAXIMIZEBOX;/取消窗口的最大化按钮取消窗口的最大化按钮 return TRUE;习题:习题:24 向导为项目向导为项目Mysdi生成了文档类的实现文件生成了文档类的实现文件MysdiDoc.cpp。与框架类与框架类CMainFrame类似,文档类类似,文档类CMysdiDoc也定义了两个用也定义了两个用于调试的成员函数于调试的成员函数AssertValid()和和Dump。2.文档类源文件文档类源文件文档类文档类CMysdiDoc的成员函

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 生活休闲 > 生活常识

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

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁