第2章 用VC编写WINDOWS应用程序文档格式.docx
《第2章 用VC编写WINDOWS应用程序文档格式.docx》由会员分享,可在线阅读,更多相关《第2章 用VC编写WINDOWS应用程序文档格式.docx(17页珍藏版)》请在冰豆网上搜索。
DeveloperStudio是一个通用的应用程序集成开发环境,它不仅支持VisualC++,还支持VisualBasic,VisualJ++,VisualInterDev等Microsoft系列开发工具。
DeveloperStudio包含了一个文本编辑器、资源编辑器、工程编译工具、一个增量链接器、源代码阅读器、集成调试工具,以及一套联机文档。
使用DeveloperStudio可以完成创建、调试、修改应用程序等各种操作。
DeveloperStudio采用标准的多窗口Windows用户界面,并增加了一些新特性,使得开发环境更易于使用,用户很容易掌握它的使用方法。
一个典型的DeveloperStudio的用户界面如图2.10所示。
VisualC++的集成开发环境DeveloperStudio提供了大量的实用工具以支持可视化编辑特性,它们包括项目工作区、ClassWizard、AppWizard、WizardBar、ComponentGallery等。
下面逐一对它们作介绍。
2.1.3利用AppWizard生成文档视图结构程序框架
VisualC++是一种功能强大的程序设计语言,它提供了各种向导和工具帮助用户来实现所需的功能,在一定程度上实现了软件的自动生成和可视化编程。
下面就通过生成一个文档视图结构程序框架介绍AppWizard的使用方法。
AppWizard能够帮助程序员一步步地生成一个新的应用程序,并且自动生成应用程序所需的基本代码。
通过DevoloperStudio的File|New菜单选项可用AppWizard建立一个项目。
单击File|New菜单项,在系统弹出的对话框中选择所要创建的文件类型,这里文件分成了Files,Projects,Workspaces,OtherDocuments4种类型,每一个类型下面又包含许多具体的文件类型,选中Projects标签,标签下的工作区中列出的是各种不同的应用程序类型,其中3种工程有AppWizard,其他一些工程有相应的向导。
在所有的工程类型中,MFCAppWizard(exe)和MFCAppWizard(dll)最为常用,它们分别用于生成MFC应用程序和MFC动态链接库;
Win32Application和Win32Dynamic-LinkLibrary用于编写完全不借助MFC类库等工具有Win32应用程序和动态链接库;
Win32ConsoleApplication用于编写Win32控制台应用程序,这种类型的Win32程序运行在一个DOS窗口中,其源程序遵从标准C/C++语言的规定,以main()函数作为程序的入口,可以调用cout这样的标准C/C++的输入/输出函数。
控制台应用程序并不是DOS程序,它是真正的Win32程序,可以调用Win32函数。
MFCActiveXControlWizard和ATLCOMAppWizard也是常见的工程类型,它们一个用于编写ActiveX控件,一个利用ATL库来编写COM对象,如下图所示。
在对话框左方选好类型后,在Projectname文件框中输入项目名称。
AppWizard用项目名来构造项目中文件名和MFC派生类的类名,项目名不应过长。
在Location一栏中为程序定义文件存放的目录,对话框右下角的Platforms一栏中的Win32项表示要创建的程序是建立在32位的Windows平台基础上的。
单击OK按纽,就启动了使用MFC方式开发应用程序的AppWizard功能。
AppWizard的创建过程共有6个步骤,在每个步骤中,对话框的左边均会显示一个图片给出各项设置的形象提示。
在任一步骤中,单击Finish按纽可结束创建工作,接受余下步骤中的默认设置;
单击Back按纽或按Next键可回到上一步骤或进入下一步骤。
●1.确定程序类型
AppWizard的第1步用于指定应用程序的类型,如下图所示,可选择单文档界面(SDI)、多文档界面(MDI)或基于对话框的界面。
在程序类型下面有一个复选框Document|Viewarchitecturesupport,即是否支持文档视图结构,默认为支持。
Singledocument是单文档应用程序(SDI),这种程序在同一时刻只能打开一个文档,例如Windows自带的记事本和写字板;
Multipledocument是多文档应用程序(MDI),这种程序在同一时刻可以打开多个文档,每个文档显示在一个子窗口中,例如OfficeWord;
Dialogbased是基于对话框的应用程序,这种程序的主界面是一个对话框,通常用来完成一些比较简单的任务,例如Windows的字符映射表程序。
在开始编写一个程序之前,应根据该程序的目的、特点来确定选择何种结构。
AppWizard的第1步还要求程序员选择程序界面上文字的语种。
可选的语种取决于安装到计算机系统上的AppWizard库。
第1步选择好后,单击Next铵纽进入第2步,单文档程序和多文档程序都有6个步骤,而基于对话框的程序只有4个步骤。
●2.数据库支持
在AppWizard的第2步中,要求程序员说明项目所需要的数据库支持如下图所示,这一步及其后的步骤假定在第1步中选择了SDI或MDI选项。
如果应用程序不涉及数据库操作,单击Next按纽跳过这一项,直接到步骤3。
该步骤的对话框中的4个单选按纽决定了AppWizard添加到项目中的数据库支持程序,说明如下:
None(无):
在生成项目时,把数据库支持的库文件排除在外。
如果应用程序不使用数据库,单击None按纽,可以减少不必要的代码。
当然,在创建时选择了此项,程序员仍可在开发过程中添加对数据库的支持。
Headerfileonly(只有头文件):
只生成数据库包含头文件和库文件,但不为数据库类生成源代码。
该选项适用于开始不使用数据库,但打算以后添加数据库支持的项目。
Databaseviewwithoutfilesupport(数据库视图,没有文件支持):
包含数据库头文件和库文件,同时也创建一个记录视图和记录集。
生成的应用程序支持文档,但不支持序列化操作。
Databasieviewwithfilesupport(数据库视图,具有文件支持):
设置同上,生成的应用程序框架支持数据库文档,也支持序列化操作。
●3.OLE和ActiveX支持
AppWizard的第3步用于设置应用程序的OLE和ActiveX支持类型。
如下图所示,选项说明如下:
AppWizard不为复合文档支持生成任何代码。
Container(包容器):
AppWizard创建能包含链接和嵌入对象的程序。
Mini-server(微型服务器):
应用程序充当一个微型服务器。
Full-server(全服务器):
AppWizard创建应用程序可充当一个全服务器。
Bothcontainerandserver(包含器和服务器):
AppWizard生成代码以使应用程序既能像集成应用程序那样嵌入对象,又能像服务器应用程序那样提供对象。
底部的两个复选框为是否要求Automation和ActiveX控件支持。
默认为支持,可以自行改变。
如果创建时选择不支持,以后加上一行代码,就可增加对ActiveX控件的支持。
●4.用户界面特征
在AppWizard的第4步可以控制为应用程序创建哪些用户界面元素。
如下图所示,在这一步中同样有很多选项,主要用于选择程序的界面特点。
选择Dockingtoolbar让程序拥有一个可以自由停靠的预定义工具条,工具条有两种类型可供选择,一种是普通的,另一种是由InternetExplorer引入的ReBar。
ReBar对普通工具条进行了扩展,使用它可以很方便地把下拉式列表框和静态文本等其他控件添加到工具条上,而使用普通工具条来完成这一功能就要复杂得多。
选择Initialstatusbar可以为程序主窗口下方添加一个预定义好了的状态条。
Printingandprintpreview则为程序的File菜单中添加打印和打印预览命令,并生成实现打印及预览功能所需的大部分源代码。
如果程序要具有上下文相关的帮助功能,那么应选择Context-sensitiveHelp。
如果不选择3Dcontrols,那么生成的程序及其对话框将会如Windows3X中的程序那样,背景是白色的,编辑框、复选框等控件是平面的,没有三维显示效果。
选择了MAPI(MessagingAPI)后,程序可以调用MessagingAPI函数,进行发传真、电子邮件或其他消息的操作。
具有网络功能的程序应选择WindowsSockets,以便使用MFC类库中相应的类来进行WindowsSocket编程。
单文档程序和多文档程序在File菜单中一般都有一个最近打开过的文档列表,第4步提供了一个选项来决定应在文档列表中保存几个文件的路径名,这个值默认为4,即最多可以保存4个文件名。
在第4步中单击Advanced按纽,又可调用如下图所示的高级选项对话框。
左图用于指定文档模板字符串。
可以改写存储在MFC框架使用的程序数据中的某些字符串,用于设置文档视图结构的一些特性。
这一部分包括下列编辑框。
编辑框
含义
Fileextension
指定应用程序创建的文档所用的文件名扩展名
FiletypeID
在Windows9x的注册数据库中标识应用程序的文档类型
MainframeCaption
主框架窗口使用的标题
Doctypename
文档类型名
Filtername
“打开文件”,“保存文件”对话框中的过滤器
Filenewname[shortname]
用于指定在new对话框中使用的文档名
Filetypename[longname]
当应用程序作为OLEAutomation服务器时使用文档类型名
右图用于指定程序主窗口的风格。
选中UsesplitWindows后让主窗口拥有水平与垂直方向上的两个分割条,用户可以在需要的时候把同一个窗口分割成最多4个子视图。
Mainframestyles是一些关于标题条和边框的选项,其中Minimized和Maximized用于指定窗口在启动时处于最小化还是处于最大化状态,这给养是互斥的,同时只能选一个。
MDIchildstyles用于选择MDI程序的子窗口的风格,其中各选项的含义与主窗口类似。
●5.使用MFC库
AppWizard的第5步用于设置应用程序风格,是否需要附加的源代码注释,以及应用程序链接到MFC库,如下图所示。
第一顶所谓WindowsExplorer类型的程序就是像资源管理器那样,主窗口被分割成左右两个部分,左边为树形视图,右边是列表视图,而MFCStandard程序的主窗口只有单一类型的视图。
第二项指定是否让Appwizard在生成的源代码中间加上适当的注释。
第三项用于指定把MFC库类作为动态链接库来使用,还是作为静态库直接链接到程序中去。
如果以dll方式来使用MFC类库,最后生成的可执行文件要小得多,但是要把这个程序复制到其他上机器上去执行就要稍微复杂一些,如果其他机器上没有安装MFC类库的dll,那么就必须自己制作一个安装程序,把这些dll都打包出来,以便与程序本身一起安装到目标机器上去。
如果以静态库方式来使用MFC类库,在编译链接时,MFC类库已经与程序合并一起了,生成的可执行文件就要大一些,但可以很方便地复制到其他机器上去运行。
●6.类和文件名
AppWizard的第6步如下图所示。
在这里可以看到Appwizard将要生成的一些C++类,其中视图类、应用程序类、主框架类和文档类等。
其中视图类要特殊一些,它的基类默认为Cview,但可以重新指定它的基类,Cview相当于提供一张白纸给用户,无论要画什么或写什么都要用户从头做起,而CeditView等类事先已具有了很多功能,可根据程序的需求,从这些基类中选择一个最适合的,以便减少编程的工作量。
完成第6步的选择之后,单击Finish按纽,AppWizard便会弹出一个对话框,把前面所做的选择概略地列出来,如果没有需要再改动的地方,单击OK按纽,AppWizard便会在指定的路径下面生成一大堆的文件,包括头文件、cpp文件、工程定义文件、资源文件等,另外还生成两个子目录,res内存放一些图像资源的原始文件,当编译链接程序的调试版本时,各种输出文件将存放在Debug目标下面,将来编译链接程序的发布版本时,所有输出文件将存放在Release目录下。
2.2用户界面对象
Windows支持丰富的用户接口对象,包括窗口、图标、菜单、对话框等。
程序员只需简单的几十行代码,就可以设计出一个非常漂亮的图形用户界面。
下面介绍一下用户界面对象中的一些术语和相关概念。
●1.窗口
窗口是用户界面中最重要的部分。
它是屏幕上与一个应用程序相对应的矩形区域,是用户与产生该窗口的应用程序之间的可视界面。
每当用户开始运行一个应用程序时,应用程序就创建并显示一个窗口;
当用户操作窗口中的对象时,程序会做出相应反应。
用户通过关闭一个窗口来终止一个程序的运行;
通过选择相应的应用程序窗口来选择相应的应用程序。
一个典型的窗口外观如下图所示。
●2.边框
绝大多数窗口都有一个边框,用于指示窗口的边界。
同时也用来指明该窗口是否是活动窗口,当窗口活动时,边框的标题栏部分呈高亮显示。
用户可以用鼠标拖动边框来调整窗口的大小。
●3.系统菜单
系统菜单框位于窗口左上角,以当前窗口的图标方式显示,单击该图标(或按ALT+空格键)就弹出系统菜单。
系统菜单提供标准的应用程序选项,包括Restore(还原窗口原有的大小),Move(使窗口可以通过键盘上的光标键来移动其位置),Size(使用光标键调整窗口大小)、Minimize(将窗口缩成图标)、Maximize(最大化,将窗口充满整个屏幕)或Close(关闭窗口)。
●4.标题栏
标题栏位于窗口的顶部,其中显示的文本信息用于标注应用程序,一般是应用程序的名字,以便让用户了解哪个应用程序正在运行。
标题栏颜色反映该窗口是否是一个活动窗口,当为活动窗口时,标题栏呈现醒目颜色。
双击标题栏可以使窗口在正常大小和最大化状态之间切换切换。
在标题栏上单击鼠标左键可以拖动并移动该窗口,右击可弹出窗口系统菜单。
●5.菜单栏
菜单栏位于标题栏下方,横跨屏幕,在它上面列出了应用程序所支持的命令,菜单栏中的项是命令的主要分类,如文件操作、编辑操作。
从菜单栏中选中某一项通常会显示一个弹出菜单,其中的项是对应于指定分类中的某个任务。
通过选择菜单中的一个项(菜单项),用户可以向程序发出命令,以执行某一功能。
如选择“文件|打开…”菜单项会弹出一个打开文件对话框,让用户选择一个文件,然后打开这个文件。
一般地,以“…”结尾的菜单项文本表明选择该项时会弹出一个对话框,让用户输入信息,然后执行操作。
若不以“…”结尾,则表明选择该菜单项直接执行一个动作,如“编辑”菜单下的“粘贴”命令。
若一个菜单项呈灰色,则表明该菜单项当前不可用。
有时菜单项上还有快捷键,快捷键是一种键盘组合,它是菜单项的一种替代方式,可以让用户通过键盘直接发出命令。
在键盘上按下这一键盘组合,就等价于选择了相应的菜单。
如“粘贴(P)Ctrl+V”,就表示粘贴操作的快捷键是Ctrl+V,按下Ctrl+V就执行粘贴操作。
●6.工具条
工具条一般位于菜单栏下方,在它上面有一组位图按纽,代表一些最常用的命令。
工具条可以显示或隐藏。
让鼠标在某个按纽上停一会儿,在按纽下方会出现一个黄色的小窗口,里面显示关于该按纽的简短说明,叫做工具条提示(ToolTip)。
用户还可以用鼠标拖动工具条将其放在窗口的任何一侧。
●7.客户区
客户区是窗口中最大的一块空白矩形区域,用于显示应用程序的输出。
例如,字处理程序在客户区中显示文档的当前页面。
应用程序负责客户区的绘制工作,而用只有和该窗口相对应的应用程序才能向该用户区输出。
●8.垂直滚动条和水平滚动条
垂直滚动条和水平滚动条分别位于客户区左侧和底部,它们各有两个方向相反的箭头和一个深色的长度可变的滚动块。
可以用鼠标选中滚动条的箭头上下卷滚(选中垂直滚动条时)或水平卷滚(选中水平滚动条时)客户区的内容。
滚动块的位置表示客户区中显示的内容相对于要显示的全部内容的位置,滚动块的长度表示客户区中显示的内容大小相对于全部内容大小的比例。
●9.状态栏
状态栏一般位于窗口底部,用于输出菜单的说明和其他一些提示信息(如鼠标位置、当前时间、某种状态等)。
●10.图标
图标是一个用于提醒用户的符号,它是一个小小的图像,用于代表一个应用程序。
当一个应用程序的主窗口缩至最小时,就呈现为一个图标。
●11.光标
Windows的光标是显示屏幕上的一个位图。
光标用于响应鼠标或其他定位设备的移动。
程序可以通过改变光标的形状来反映系统发生的变化。
例如,程序常显示一个计时的光标,用于指示用户一些漫长的操作正在进行之中。
程序也可以通过改变光标让用户知道程序进入了一种特殊模式,例如,绘图程序经常改变光标来反映被绘制对象的类型,是直线还是圆或其他。
●12.插入符
插入符是一个微小并闪烁的位图,作为一个键盘控制的指针。
控制键盘输入的窗口可以创建一个插入符去通知用户:
窗口现在可以进行键盘输入。
在Windows中,“光标”被作为鼠标指针。
应用程序必须维护这个插入符。
在Windows中,在一个时间只允许有一个插入符存在。
因此,要使用插入符号作为键盘指针的应用程序必须在取得焦点时创建一个插入符号,并在失去焦点后删除它。
●13.对话框
对话框是一种特殊的窗口,它提供了一种接收用户输入、处理数据的标准方法。
特别地,当用户输入了一个需要附加信息的命令时,对话框是接收输入的的标准方法。
比如,假设用户要求系统打开一个文件,对话框就可以提供一个让用户从一组文件中选择一个文件的标准方法。
如前所述,在一般情况下,在选择菜单名字后面跟着省略号(…)的菜单项通常会弹出一个对话框。
下图给出了查找对话框的一个例子。
●14.控件
查找对话框是一个独立的窗口,它显示信息并接收用户的输入。
在对话框中,还包含了许多小的窗口,这些窗口被称为控件。
控件是应用程序用来获得用户特定信息的窗口,比如要打开文件的名字或自动换行的设置等。
应用程序也会通过控件获取所需的信息,以便控制程序的某种属性,如自动换行特性的开关。
控件总是与共他窗口连用,典型的是对话框,但也可以用在普通窗口之中,常见的控件有:
按纽、编辑框、列表框、组合框、静态文本等。
●15.消息框
消息框是用于给用户一些提示或警告的窗口。
例如,消息框能够在应用程序执行某项任务过程中出现问题时通知用户。
下图所示的对话框警告用户执行了一个不合法的操作。
2.3简单的Windows程序
通过前面的介绍,已经对Windows程序有了一个感性的认识。
那么,如何应用VisualC++编写程序呢?
在本节中,通过一个简单的Windows程序,介绍用VisualC++编写一个简单的Windows程序。
【例2.1】创建一个基于单文档的应用程序,名为Text,并在窗口中显示指定的字符。
(1)创建基本程序
打开File|New|NewsProjects,然后在列表中选择MFCAPPWizard(exe),告诉VisualC++要使用AppWizard创建一个exe程序;
在ProjectName编辑框中输入工程文件名Text,在Location中指定应用程序创建位置,然后单击OK按纽。
此时弹出MFCAppWizard-Step1对话框,选择SingleDocument,生成一个单文档的应用程序框架,其他选项全部采用默认的选项,最后单击Finish按纽完成程序框架的建立。
(2)加入显示功能
在工作区中选择卡