由于此商品库存有限,请在下单后15分钟之内支付完成,手慢无哦!
100%刮中券,最高50元无敌券,券有效期7天
活动自2017年6月2日上线,敬请关注云钻刮券活动规则更新。
如活动受政府机关指令需要停止举办的,或活动遭受严重网络攻击需暂停举办的,或者系统故障导致的其它意外问题,苏宁无需为此承担赔偿或者进行补偿。
正版新书]Visual C++面向对象编程(第4版)王育坚9787302498544
¥ ×1
第1章 Visual C++集成开发环境
1.1 Visual C++概述
1.1.1 Visual C++的特点
1.1.2 集成开发环境窗口
1.1.3 编译器和链接器
1.1.4 编写Win32控制台应用程序
1.1.5 MSDN帮助系统
1.2 项目和项目工作区
1.2.1 项目
1.2.2 项目工作区
1.2.3 ClassView类视图
1.2.4 ResourceView资源视图
1.2.5 FileView文件视图
1.2.6 项目设置
1.3 编辑器
1.3.1 源代码编辑器
1.3.2 资源编辑器
1.4 菜单栏和工具栏
1.4.1 菜单栏
1.4.2 工具栏
习题
第2章 C++语言基础
2.1 C++概述
2.1.1 C++语言的历史和特点
2.1.2 C++程序与C程序
2.1.3 C++对C的一般扩充
2.2 C++程序基本要素
2.2.1 标识符和关键字
2.2.2 常量和变量
2.2.3 运算符和表达式
2.3 C++数据类型
2.3.1 基本数据类型
2.3.2 数组
2.3.3 指针
2.3.4 字符串
2.3.5 const常量类型
2.3.6 结构体
2.3.7 枚举
2.3.8 typedef类型定义
2.4 控制语句
2.4.1 选择语句
2.4.2 循环语句
2.4.3 转移语句
2.5 函数
2.5.1 函数的定义
2.5.2 函数的调用和参数传递
2.5.3 函数的声明
2.5.4 内联函数
2.5.5 函数的默认参数值
2.5.6 引用
王育坚,教授。本人长期承担计算机科学与技术专业本科生专业课和专业基础课的教学工作,是北京联合大学计算机科学与技术本科专业负责人,中国计算机学会不错会员、教育专业委员会委员,计算机科学与技术学科硕士生导师、学位委员,教育部硕士研究生学位论文通讯评议专家。近年来主持北京市精品教材和“十一五”国家规划教材项目,主持北京市财政专项计算机科学与技术等专业建设(市级)项目,主持校级本科骨干建设专业等项目。主持开展专业建设、教学研究和教学改革,获校级教学成果奖3项。近年来主持和参加北京市教委和横向科研、教学研究项目多项,发表学术论文10多篇,出版教材2本,取得软件著作权2项,申请受理专利3项。
第章5第5章创建应用程序框架前面几章主要介绍了C++基本程序设计方法,没有涉及Windows编程的内容。从本章开始,重点介绍利用VisualC++进行Windows应用程序设计的方法。与DOS应用程序相比,Windows应用程序以窗口的形式出现,内部采用消息处理机制,其编程原理和方法比较复杂。虽然应用程序的类型很多,但同一类型的Windows应用程序具有类似的界面风格(如相同的菜单栏和工具栏),其程序结构也大致相同。因此,可以为同一类型的应用程序设计一个模板,即应用程序框架(ApplicationFrameWorks,AFX)。本章主要介绍利用MFCAppWizard应用程序向导创建Windows应用程序框架的方法,并介绍ClassWizard类向导和Debug调试工具的使用方法。
5.1应用程序向导
与其他可视化软件开发环境一样,VisualC++IDE也提供了创建应用程序框架的向导AppWizard和相关的工具。应用程序向导实质上是一个源程序生成器,所完成的工作包括产生源代码、添加资源和设置编译选项。利用不同的应用程序向导可以自动创建不同类型或风格的应用程序,实现代码的可重用。应用程序向导在很大程度上减轻了程序员手工编写代码的工作量,使得程序员可以集中精力编写具体应用的代码。
5.1.1VisualC++向导的类型VisualC++集成开发环境提供了创建各种类型应用程序的向导,执行File|New命令就列出了所有的应用程序向导,供程序员进行选择。下面给出VisualC++集成开发环境提供的向导类型及简要的说明。
ATLCOMAppWizard:创建一个包含ActiveX控件的活动模板库ATL(ActiveTemplateLibrary)。
ClusterResourceTypeWizard:创建能够在微软群服务器上模拟和管理的项目。
CustomAppWizard:利用用户定制的模板向导创建项目。
DatabaseProject:创建数据库项目。
DevStudioAdd_inWizard:创建一个用C++或汇编语言编写的、类似于DeveloperStudio形式的外接程序。
ExtendedStoredProcWizard:在SQLServer上创建一个建立扩展存储的程序。
ISAPIExtensionWizard:利用ISAPI(InternetServerAPI)创建网页浏览程序。
Makefile:制作Makefile生成文件,定制自己项目的集成开发环境。
MFCActiveXControlWizard:创建基于MFC的ActiveX控件。
MFCAppWizard\\\\[dll\\\\]:创建基于MFC的动态链接库。
MFCAppWizard\\\\[exe\\\\]:创建基于MFC的应用程序,这是最常用的向导。
NewDatabaseWizard:在SQL服务器上创建一个SQLServer数据库。
UtilityProject:创建自定义编译规则的项目,该项目可以作为一些子项目的主项目,它不产生LIB、DLL或EXE文件。
Win32Application:创建Win32应用程序,采用API方法编程。
Win32ConsoleApplication:创建DOS环境下的Win32控制台应用程序,采用C++或C语言进行编程。这是在前几章中用到的向导。
Win32DynamicLinkLibrary:创建Win32动态链接库,采用API方法编程。
Win32StaticLibrary:创建Win32静态链接库,采用API方法编程。
VisualC++集成开发环境提供的关于程序的向导种类很多,除了创建基于MFC应用程序的向导,还有创建其他类型应用程序的向导。在上面列出的所有向导中,MFC应用程序向导MFCAppWizard\\\\[exe\\\\]是最常用的向导,本节将重点进行介绍。此外,MFCActiveXControlWizard、MFCAppWizard\\\\[dll\\\\]、Win32Application、Win32ConsoleApplication、Win32DynamicLinkLibrary等向导也较常用。
5.1.2MFCAppWizard的使用步骤区别于DOS应用程序,即使一个最简单的Windows应用程序,也必须是以窗口的形式显示运行,这就需要编写一些复杂的程序代码。同一类型应用程序的框架窗口风格一般相同,如具有相同的菜单栏、工具栏、状态栏和客户区,并且基本菜单命令的功能也相同,如具有相同的文件操作命令和编辑命令。因此,同一类型应用程序建立框架窗口的基本代码都是一样的(尽管有些参数不一定相同),可以为同一类型的应用程序设计一个统一的应用程序框架。为了避免程序员重复编写这些代码,一般的可视化软件开发工具都提供了创建Windows应用程序框架的向导。
MFCAppWizard\\\\[exe\\\\]是一个创建基于MFC的Windows应用程序的向导,当利用MFCAppWizard\\\\[exe\\\\]向导创建一个项目时,向导能够自动生成一个MFC应用程序的框架。MFC应用程序框架将那些每个应用程序都共同需要的代码封装起来,这些代码完成的任务包括初始化应用程序、建立应用程序界面和处理基本的Windows消息,这样使得程序员不必花费时间去做那些重复的工作,而把精力放在编写实质性的代码上。
即使不添加任何代码,当执行编译、链接命令后,VisualC++集成开发环境也可以利用MFC应用程序框架生成一个Windows界面风格的应用程序。
MFCAppWizard\\\\[exe\\\\]向导按步骤引导用户创建一个应用程序框架。在向导的每一步都提供了一个对话框和一些选项,程序员通过选择不同的选项,可以创建不同类型和风格的MFC应用程序,并可定制不同的程序界面窗口。例如,程序是单文档、多文档应用程序,还是基于对话框的程序,是否支持数据库操作,是否可以使用ActiveX控件以及是否具有联机帮助等。
下面以建立一个SDI单文档应用程序为例说明MFCAppWizard\\\\[exe\\\\]应用程序向导的使用方法和每一个操作步骤对话框中各选项的含义。
例51编写一个单文档应用程序Mysdi,程序运行后在程序视图窗口中显示文本串“这是一个单文档程序!”。
【编程说明与实现】(1)在VisualC++IDE中执行File|New菜单命令,打开如图51所示的New对话框。
图51New对话框(2)确认New对话框的当前页面为Projects,在左栏的项目类型列表框中选择MFCAppWizard\\\\[exe\\\\]项,在ProjectName框输入项目的名称,本例为Mysdi。在Location框输入项目所在的路径,可以单击其右侧的“…”浏览按钮来对默认的路径进行修改。向导将在该路径下建立一个名为Mysdi的文件夹,用于存放这个项目的所有文件。设置好后,单击OK按钮,打开MFCAppWizardStep1对话框,如图52所示。
图52MFCAppWizard\\\\[exe\\\\]第1步(3)在MFCAppWizardStep1对话框中选择要创建应用程序的类型,向导可以创建以下3种类型的应用程序。
Singledocument:单文档(SDI)应用程序,程序运行后出现标准的Windows界面,它由框架(包括菜单栏、工具栏和状态栏)和客户区组成。程序运行后一次只能打开一个文档。例如,Windows记事本Notepad就是一个SDI应用程序。
Multipledocuments:多文档(MDI)应用程序,与SDI应用程序不同,MDI程序运行后可以同时打开多个文档。例如,MicrosoftWord就是一个MDI应用程序。
Dialogbased:基于对话框的应用程序,程序以对话框的形式出现。例如,计算器Calculator就是一个基于对话框的应用程序。
选项中,“Document/Viewarchitecturesupport?”询问是否支持文档/视图结构。“Whatlanguagewouldyoulikeyourresourcesin?”用于选择资源语言的种类。
在本例中,选择Singledocument,其他使用向导的默认选项。单击Next按钮,打开MFCAppWizardStep2of6对话框,如图53所示。
图53MFCAppWizard\\\\[exe\\\\]第2步(4)在MFCAppWizardStep2of6对话框中选择应用程序支持数据库的方式,其中包括以下选项。
None:创建的应用程序不包括任何对数据库的操作功能,但程序员以后可以手工添加对数据库的操作代码。此项为默认选项。
Headerfilesonly:提供了最简单的数据库支持,仅在项目的stdAfx.h文件中使用#include指令包含afxdb.h和afxdao.h两个文件(定义MFC数据库类的头文件),但并不生成与数据库相关的类,程序员需要时可以自己创建。
Databaseviewwithoutfilesupport:包含了所有的数据库头文件,并生成了相关的数据库类和视图类,但不支持文档的序列化,向导创建的应用程序的File主菜单中将不包含有关文件操作的菜单命令项。
Databaseviewwithfilesupport:包含了所有的数据库头文件,生成了相关的数据库类和视图类,并支持文档的序列化。
值得说明的是,后两个选项必须在上一步选择“Document/Viewarchitecturesupport?”项时才有效。并且,若选择了后两项,还必须通过DataSource按钮设置数据源。
本例使用向导的默认选项,单击Next按钮,打开MFCAppWizardStep3of6对话框,如图54所示。
图54MFCAppWizard\\\\[exe\\\\]第3步(5)在MFCAppWizardStep3of6对话框中选择应用程序所支持的复合文档类型。OLE和ActiveX一起被称为复合文档技术,其中包括以下选项。
None:应用程序不支持任何复合文档,该项是默认选项。
Container:应用程序作为复合文档容器,能容纳所嵌入或链接的复合文档对象。
Miniserver:微型复合文档服务器,应用程序可以创建和管理复合文档对象,对于所创建的复合文档对象,集成应用程序可以嵌入,但不能链接。微型服务器不能作为一个单独的程序运行,而只能由集成应程序来启动。
Fullserver:完全复合文档服务器,除了具备上面微型服务器的功能外,应用程序支持链接式对象,并可作为一个单独的程序运行。
Bothcontainerandserver:应用程序既可作为一个复合文档容器,又可作为一个可单独运行的复合文档服务器。
Yes,please:应用程序支持复合文档文件格式的序列化,可以将复合文档对象保存在硬盘中。
No,thankyou:应用程序不支持复合文档文件格式的序列化,只能将复合文档对象加载到内存,不能保存在硬盘中。
Automation:应用程序支持自动化,应用程序可以操作其他程序所创建的对象,或提供自动化对象给自动化客户访问。
ActiveXControls:应用程序可使用ActiveX控件,此项也是默认选项。
在本例中,保留None选项,取消ActiveXControls选项。单击Next按钮,打开MFCAppWizardStep4of6对话框,如图55所示。
图55MFCAppWizard\\\\[exe\\\\]第4步(6)在MFCAppWizardStep4of6对话框中设置应用程序的外观特征,如设置工具栏和状态栏,其中包括以下选项。
Dockingtoolbar:默认选项,为应用程序添加一个标准的工具栏。
Initialstatusbar:默认选项,为应用程序添加一个标准的状态栏。
Printingandprintpreview:默认选项,应用程序支持打印和打印预览的功能。
ContextsensitiveHelp:应用程序具有上下文相关帮助功能。
3Dcontrols:默认选项,应用程序界面具有三维外观。
MAPI(MessageAPI):应用程序能使用邮件API,具有发送电子邮件的功能。
WindowsSockets:应用程序能使用WinSock套接字,支持TCP/IP协议。
在该对话框中还可以设置应用程序工具栏的风格,有以下两个选项。
Normal:应用程序工具栏采用传统风格,此项是默认选项。
InternetExplorerReBars:应用程序工具栏采用IE浏览器风格。
在应用程序的File主菜单中会列出最近使用过的文档,“Howmanyfileswouldyoulikeonyourrecentfilelist?”框中的数字为可列出文档的最多个数,默认值为4。
单击对话框中右下角的Advanced按钮可进行更高级的设置,可以修改文件名或扩展名,也可以进一步调整程序用户界面窗口的样式,如设置边框厚度和最小化、最大化、关闭按钮等。
同前面一样,本例使用默认选项。单击Next按钮,打开MFCAppWizardStep5of6对话框,如图56所示。
图56MFCAppWizard\\\\[exe\\\\]第5步(7)在MFCAppWizardStep5of6对话框中设置应用程序的风格,包括以下选项。
MFCStandard:应用程序采用MFC标准风格(文档/视图结构),该项是默认选项。
WindowsExplorer:应用程序采用Windows资源管理器风格。
在该对话框中还可以选择MFCAppWizard\\\\[exe\\\\]向导是否为源代码生成注释。
Yes,please:向导在源程序中自动加入注释,该项是默认选项。
No,thankyou:向导不在源程序中加入注释。
在该对话框中还可以设置MFC库与应用程序的链接方式。
AsasharedDLL:采用共享动态链接库的方式,即在程序运行时才调用MFC库。采用此方式可减少程序所占空间,该项是默认选项。
Asastaticallylinkedlibrary:采用静态链接库(SLL)的方式,即在编译、链接时把要用到的MFC库与应用程序相链接。采用此方式能提高运行速度,且不用考虑程序最终运行环境中是否有MFC库。但采用此方式增加了程序所占空间。
本例使用默认选项,单击Next按钮,打开MFCAppWizardStep6of6对话框,如图57所示。
图57MFCAppWizard\\\\[exe\\\\]第6步(8)在MFCAppWizardStep6of6对话框中列出了向导将创建的类,可以修改一些类默认的类名和对应的头文件名、源文件名。对某些类(如CMysdiView)还可以选择不同的基类。单击Finish按钮,打开NewProjectInformation对话框,如图58所示。
图58生成项目的信息(9)在NewProjectInformation对话框中,根据用户在前面各步骤对话框中所做的选择列出将要创建项目的有关信息,如应用程序的类型、创建的类和文件名、应用程序的特征以及项目所在的路径。若要修改这些内容,可单击Cancel按钮返回到前一个对话框。最后,单击OK按钮,MFCAppWizard\\\\[exe\\\\]向导将开始创建应用程序框架。
当应用程序框架创建成功后,DeveloperStudio将装入应用程序项目,并在Workspace(工作区)窗口打开这个项目。一个应用程序是以项目为单位来进行组织和管理的。若想在同一个路径下重新创建一个同名的项目,必须首先将原来的项目删除或移走。
利用MFCAppWizard\\\\[exe\\\\]向导创建应用程序框架后,无须手工添加任何代码,就可以对程序进行编译、链接,生成一个应用程序。但一般情况下,程序员应根据程序功能需要,利用DeveloperStudio中的集成工具向应用程序框架添加具体的代码。
在本例中,需要在成员函数CMysdiView∷OnDraw()中添加显示文本“这是一个单文档程序!”的代码。在Workspace窗口单击ClassView页面,单击CMysdiView类左边的“+”展开该类,双击其中的成员函数OnDraw(),在编辑窗口出现该成员函数的代码,在指定位置添加如下黑体所示的代码。voidCMysdiView::OnDraw(CDCpDC){CMysdiDocpDoc=GetDocument();ASSERT_VALID(pDoc);//TODO:adddrawcodefornativedataherepDC->TextOut(100,100,\\\"这是一个单文档程序!\\\");//在坐标(100,100)处显示文本串}函数TextOut()是CDC类的成员函数,其功能是在指定位置输出字符串。第1、2个参数是坐标位置,第3个参数是要输出的字符串。MFC应用程序一般在视图类的成员函数OnDraw()中实现屏幕输出,因为在重绘程序窗口时将自动调用函数OnDraw(),这样保证了要输出的内容在每一次打开窗口时都能够显示。图59运行程序Mysdi执行Build命令(F7键)编译链接程序,程序运行后将在程序视图窗口显示文本串“这是一个单文档程序!”,其运行结果如图59所示。
在Workspace窗口的ClassView页面展开一个类,可以看到每一个类的成员变量和成员函数的左边都有一个小图标,它们分别有不同的含义,表示成员变量和成员函数的3种访问属性。每种图标及说明如表51所示。表51ClassView中各图标的含义图标说明图标说明表示公有成员变量表示公有成员函数表示私有成员变量表示私有成员函数表示保护成员变量表示保护成员函数若在MFCAppWizardStep1对话框(如图52所示)中选择Dialogbased项,向导将创建一个基于对话框的应用程序。这时,MFCAppWizard\\\\[exe\\\\]向导将给出与创建单文档和多文档应用程序有所不同的操作步骤,其主要原因是基于对话框的应用程序一般不包含文档操作,不支持数据库和复合文档的使用。基于对话框的应用程序运行后首先出现一个对话框,一般的软件安装程序就是由一系列对话框组成的。下面通过一个例子说明如何利用MFC应用程序向导创建一个对话框应用程序。
亲,大宗购物请点击企业用户渠道>小苏的服务会更贴心!
亲,很抱歉,您购买的宝贝销售异常火爆让小苏措手不及,请稍后再试~
非常抱歉,您前期未参加预订活动,
无法支付尾款哦!
抱歉,您暂无任性付资格