使用AppWizard(上)

 

·什么是AppWizard

说起Wizard(向导),大家应该不会感到陌生,因为Windows 9x提供了很多向导来帮助用户完成一些特定的任务。向导可以把复杂的任务分解成几个简单的步骤,并且逐步提示用户应该做些什么。AppWizard称为应用程序向导,是帮助我们生成应用程序框架源代码的一种特殊的向导。它允许我们作一系列的选择,并在此基础上自动生成VC源程序代码,这些代码构成了一个应用程序的框架。由于AppWizard生成的框架已经是一个完整的可以运行的程序,我们只需要在这个基础上进行修改并添加新的功能,从而在很大程度上减轻了编程的工作量。因此,多数用VC开发的软件都是从AppWizard生成的程序框架开始编写的。
不过,虽说AppWizard带来了很大方便,但初学者往往对它生成的程序框架感到难以理解。这是很正常的,因为这个程序框架已经包含了很多涉及到MFC类库的原理和结构方面的知识,需要我们在编程过程中不断地学习和积累。
VC支持多种AppWizard,从File菜单中选择New命令,就会弹出如图5-1所示的对话框。在Projects一页中列出多种类型的工程,其中有三种工程有AppWizard,其它一些工程有相应的向导。其实,这里列出来的AppWizard和向导都是一些特殊的动态链接库,它们存放在VS98的“/Program Files/Microsoft Visual Studio/Common/MSDev98/Bin/Ide”目录下,文件的扩展名为“.awx”。这些特殊的动态链接库可以用VC来编写,图5-1中的“Custom AppWizard”便是专门用来编写AppWizard的工程类型。心铃还从来没有编过AppWizard,有兴趣的朋友不妨试试。
在所有的工程类型中,“MFC AppWizard(exe)”和“MFC AppWizard(dll)”最为常用,它们分别用于生成MFC应用程序和MFC动态链接库;“Win32 Application”和“Win32 Dynamic-Link Library”用于编写完全不借助MFC类库等工具的WIN32应用程序及动态链接库;“Win32 Console Application”特别值得一提,它用于编写WIN32控制台应用程序,这种类型的WIN32程序运行在一个DOS窗口中,其源程序遵从标准C/C++语言的规定,以main()函数作为程序的入口,可以调用printf()这样的标准C/C++输入输出函数。以前曾在DOS下学习过Turbo C/C++、Borland C++的朋友可以运用自己的知识迅速编写一个控制台应用程序,而不一定需要具备很多的Windows编程知识。控制台应用程序并不是DOS程序,它是真正的WIN32程序,可以调用WIN32函数。因此,如果你在学习VC过程中对某些API函数不清楚,完全可以建立一个控制台应用程序,在其中做实验,看看某个API函数应该怎样使用,效果如何等等;“MFC ActiveX ControlWizard”和“ATL COM AppWizard”也是常见的工程类型,它们一个用于编写ActiveX控件,一个利用ATL库来编写COM对象,当然,这两种工程涉及到的知识就要深奥一些了,我们的讲座中不会讨论它,但希望朋友们将来能进行这方面的开发工作。
好了,现在我们选择“MFC AppWizard(exe)”工程类型,给工程取名为Schedule,按下OK按钮,便可以启动MFC AppWizard。

·使用MFC AppWizard

利用MFC AppWizard生成程序框架需要进行几个步骤的选择。第一步如图5-2所示,其中有三种类型的程序可供选择:“Single document”是单文档应用程序(SDI),这种程序在同一时刻只能打开一个文档,例如Windows自带的记事本和写字板;“Multiple documents”是多文档应用程序(MDI),这种程序在同一时刻可以打开多个文档,每个文档显示在一个子窗口中,例如Word 97;“Dialog based”是基于对话框的应用程序,这种程序的主界面是一个对话框,通常用来完成一些比较简单的任务,例如Windows的字符映射表程序,另外,VB生成的基于Form的普通程序与VC中基于对话框的程序也有很多相似之处。在开始编写一个程序之前,我们应根据该程序的目的、特点来确定选择何种类型。日程安排程序不需要新建任何文档,只需处理一个特定的数据文件,因此我们选择单文档类型。

第一步选择好后,我们按下Next按钮进入第二步,如图5-3所示。单文档程序和多文档程序都有六个步骤,而基于对话框的程序只有四个步骤,在每一步中,我们都可以按Back按钮回到上一步中,也可以直接按下了Finish按钮,接受后面几个步骤的缺省值。

第二步选择为该程序添加何种级别的数据库支持,由于日程安排程序不涉及数据库操作,因此我们选择“None”。如果你的程序想要访问数据库,但不想从CFormView类来派生视类,应选择第二项“Header files only”。如果程序要使用从CFormView类派生出来的视类,但不需要存取文档,应选择第三项“Database view without file support”。如果程序还要存取文档,那么应选择第四项“Database view with file support”。选择了第三项或第四项后,我们还要选择相应的数据源(Data Source),那么什么是数据源呢?嘿嘿,心铃不再往下介绍了,学习VC有个特点,即使是最基本的工具也可能会涉及到不少较深的知识,如果我们遇到了一些不明白,但不影响现在工作的问题,不如先直接跳过去,以后需要用到的时候再来一鼓作气地攻下这些难点。

Next按钮再次把我们带到如图5-4所示的第三步。这一步的选项比较多,都是关于OLE方面的问题。如果程序不支持复合文档的话,那么应选“None”。复合文档是OLE的一项技术,举个简单的例子,Word文档就是一种复合文档,除了普通的文字内容外,其中还可以存放表格、图片、声音等各种对象,甚至包括程序代码(就是宏啦)。复合文档的使用方法比较复杂,日程安排程序不会用到它,因此我们选择“None”。
“Automation”是指OLE自动化,也是OLE的一项技术,如果程序要调用其它OLE自动化程序,或者自己提供自动化接口给别的程序使用,那么应选中该项。如果程序中要使用ActiveX控件,那么应选中“ActiveX Controls”。同样,ActiveX控件也是OLE的一项技术,但它使用起来要比复合文档和OLE自动化简单得多,因此也应用得更为广泛一些。虽然日程安排程序用不到ActiveX控件,但我们仍然把它选上,此举并不会为程序增加多少复杂度。
继续进入如图5-5所示的第四步,在这一步中同样有很多选项,主要用于选择程序的界面特点。
选择“Docking toolbar”让程序拥有一个可以自由停靠的预定义工具条,并且工具条有两种类型可供选择,一种是普通的,另一种是由IE4引入的ReBar。初看这两种工具条区别并不大,但ReBar对普通工具条进行了扩展,使用它可以很方便地把下拉式列表框和静态文本等其它控件添加到工具条上,而使用普通工具条来完成这一功能就要复杂得多;选择“Initial status bar”可以为程序主窗口下方添加一个预定义好了的状态条;“Printing and print preview”则为程序的File菜单中添加打印和打印预览命令,并生成实现打印及预览功能所需的大部分源代码;如果程序要具有上下文相关的帮助功能,那么应选择“Context-sensitive Help”;如果不选择“3D controls”,那么生成的程序及其对话框将会向Windows 3.x中的程序那样,背景是白色的,编辑框、复选框等控件是平面的,没有三维显示效果;选择了“MAPI(Messaging API)”后,程序可以调用Messaging API函数,进行发传真、电子邮件或其它消息的操作;具有网络功能的程序应选择“Windows Sockets”,以便使用MFC类库中相应的类来进行Windows Socket编程。日程安排程序将选择其中的第一、第二、第三和第五项。
单文档程序和多文档程序在File菜单中一般都有一个最近打开过的文档列表,第四步提供了一个选项来决定应在文档列表中保存几个文件的路径名,这个值缺省为4,即最多可以保存4个文件名。

 

讲到这里,虽然第四步还未介绍完,但心铃必须先结束第五讲了。在下一讲中,心铃将继续介绍AppWizard的第四步到第六步各有什么功能,在生成了程序框架后,我们就可以试着编译连接并且运行一下,看看AppWizard生成的程序框架终究是啥模样。好了,各位朋友,欲知后事如何,且听下回分解。

名词释疑:

OLEOLE原本是Object Linking and Embedding(对象链接和嵌入)的缩写,指一种在应用程序之间传输和共享信息的技术,链接和嵌入分别是两种传输和共享信息的方式。但是后来OLE已经超出了原来的含义,成为了以COM(组件对象模型)为基础的一系列组件编程技术的总称,这些技术包括复合文档、OLE自动化、ActiveX控件、DCOM等等。不过,现在人们更多地使用ActiveX技术来代替OLE这个名词。
ActiveX控件:它是应用OLE技术(或称ActiveX技术)的一种可重用的软件组件,这种组件可以嵌入到Web页面中以产生动画和其它多媒体效果,生成交互式对象。ActiveX控件同样可用于为桌面应用程序和软件开发工具增加特殊的功能。
ATLATL是Active Template Library(活动模板库)的缩写,它是专门用来创建ActiveX控件的一组C++类模板的集合,利用它编写的ActiveX控件比使用MFC类库编写的ActiveX控件要更小更紧凑一些,因此更适合于在Web上发布,但它使用起来要比MFC类库复杂得多。

在程序类型下面有一个复选框“Document/View architecture support”,即是否支持文档/视结构,缺省为支持。生成的程序将拥有文档类(先理解成负责读写和管理文件的类吧),可以新建或打开文档,并且在MFC类库的帮助下,文档类与视类(先理解成负责显示输出的类吧)之间存在着紧密的联系。如果选择不支持,那么生成的程序要简单一些,其中没有文档类。原则上来说,日程安排程序不处理其它任何文件,可以选择不支持文档/视结构,但为了与大多数MFC应用程序保持一致,心铃决定选择支持文档/视结构。
在选择资源的语种时,只要没有什么特殊原因,我们一般都选中文资源,毕竟我们是在中文平台上开发程序嘛。
 
  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值