1基于VB的桌面系统开发方案程序的打包和展开2课题目标学会如何为应用程序创建帮助文件了解What’sThisHelp和ToolTipText属性的使用区分P-code(伪代码)和Nativecode(本机代码)两个编译选项的不同了解使用打包和开发向导进行程序打包和开发的步骤了解TreeView控件的使用3回顾介绍进程和线程的概念两种部件——进程内部件(.dll)和进程外部件(.exe)。在VisualBasic中创建一个ActiveXDLL简要说明了对象浏览器在工程中的作用类型库和对象的概念介绍了ActiveX文档使用DHTML应用程序创建Internet上的文档4如何创建帮助按下F1就可以调出相关主题的帮助文件一个典型的帮助窗口包括三个部分:–目录显示所有帮助文件的结构信息只用鼠标就可以跳到相应主题–索引和一本书的索引类似按照字母顺序列出帮助文件中创建的所有主题的一个列表。主题是我们在帮助文件中生成的主题的名称5如何创建帮助(续)–查找通过创建一个帮助文件信息的数据库来实现的跳跃式的查询数据库中包括了所有帮助文件中的单词用户在不知道主题的情况下可以通过指定一个单词进行查找6MSWord的帮助对话框7VisualBasic的帮助VisualBasic6.0提供详细的帮助系统它有功能强大的帮助系统,称为MicrosoftDeveloper’sNetworkLibrary(MSDN)VisualBasic支持窗口帮助(WinHelp)和最新的HTML帮助系统8帮助文件的属性使用HelpFile和HelpContextID属性来指向相应的帮助文件,以便为用户提供上下文相关的帮助9HelpFile属性在设计的时候通过“工程属性”对话框来设置应用程序的帮助文件。10设置HelpFileHelpFile属性在运行时可以通过两种方法来设置——使用App对象或是Err对象App对象–使用App关键字访问–指明应用程序的标题、版本、路径、可执行文件名和帮助文件,以及是否有实例在运行–App对象的HelpFile属性用来指定帮助文件的名称–需要有效的WinHelp(.hlp)或HTMLHelp(.chm)文件–如果指定的文件不存在,则程序会告错–Err对象用来处理运行错误–Err对象也支持HelpFile和HelpContext属性11设置HelpFile(续)PrivateSubForm_Load()App.HelpFile=App.Path&“\vb98.chmEndSub12设置HelpFile(续)PrivateSubcommand1_Click()DimmsgAsStringOnErrorResumeNextText3.Text=Text1.Text/Text2.Textmsg=Err.Number&&Err.HelpFile&&Err.DescriptionMsgBoxmsgEndSub13HelpContextID属性为应用程序的任何用户界面提供上下文主题帮助在帮助文件中为每一个主题指定一个标记,这个标记是一个数字ID,它和应用程序中的某一个指定项的主题相关例如:–可以把一个命令按钮控件的HelpContextID属性设置为10000–在用户选中这个按钮并按下F1时,VisualBasic就会在程序的HelpFile属性指定的帮助文件中寻找Context为10000的帮助文件–如果找到,就会打开一个帮助窗口并显示这个主题;如果没有,就会告错并显示帮助文件的缺省主题在设计时,HelpContextID属性可以在属性窗口中进行设置14设置HelpContextID15“What’sThisHelp”属性上下文敏感帮助的替换物提供不使用帮助窗口的对指定主题的帮助设置和上下文敏感帮助一样在设计时设置或在运行时设置都可以选中控件时可以提供一个到弹出式帮助主题的连接16“What’sThisHelp”属性在用户界面上提供帮助Winhelp和HTML帮助系统都支持这个属性“这是什么?”帮助按钮:17“这是什么?”弹出帮助主题因为“这是什么?“帮助按钮包含在窗口的标题条中,所以窗口的最大化和最小化按钮会被移走18“这是什么?”帮助按钮在窗体的标题条上显示:–在属性窗口中把窗体的WhatsThisHelp属性设为True–同时把What’sThisButton属性设为True–把BorderStyle属性设为“3-FixedDialog”–选中想要提供帮助的控件–在属性窗口中,在WhatsThisHelpID属性中输入相关的弹出帮助的上下文ID号19“这是什么?”帮助按钮(续)就象上下文敏感帮助需要一个从帮助文件到HelpContextID属性的映射一样,‘这是什么?’帮助也需要从帮助文件到What’sThisHelpID属性的一个映射20提供工具提示当光标在一个控件上停留一定时间后就会显示出来的一个小小的标签对这个控件的功能给出一个简短的描述21在设计时可以按照下面所给的步骤为一个工具条添加工具提示:–在窗体中放置好一个带有按钮的工具条后,用鼠标右键单击要求工具提示的按钮–选中“属性”菜单项以便弹出属性页对话框–在“按钮”卡片上通过选中要设置工具提示的按钮的索引来选中这个按钮–在工具提示文本框中输入帮助文本提供工具提示(续)22提供工具提示(续)属性页对话框23提供工具提示(续)在运行时刻可以使用下面的方法来把工具条Toolbar1的第二个按钮的tooltiptext属性设置为“Deleteafile”:Toolbar1.Buttons(2).ToolTipText=“Deleteafile”VisualBasic的大部分控件在属性页中都支持tooltiptext属性。通过下面的格式来设置Tooltiptext属性值:command1.ToolTipText=“Clicktosave”24编辑选项两种通用的文件格式––伪代码(p-code)–本机代码(nativecode)一个工程可以编译为这两种格式中的任何一种这两种格式的主要区别在于可执行文件的大小和程序运行的速度25伪代码P-code介于程序的文本文件和计算机处理器直接执行的本机代码之间的中间代码在运行时,VisualBasic把每一句伪代码翻译为本机代码,也就是把每一句伪代码转换为计算机处理器可以理解的指令如果想避免这种转换的话可以直接把程序编译为本机代码格式在执行时,VisualBasic是按照需要执行编译的–这意味着当我们在VisualBasic中启动一个程序时,只让程序要运行的部分被编译伪代码指令被转换为处理器可以执行的指令在运行时,使用一个库在伪代码执行前对它进行解释26伪代码P-code(续)优点–比本机代码产生的最终代码少,这样可以减小编译后的文件的大小–编译的速度也比编译本机代码要快缺点–运行起来比本机代码慢27本机代码是处理器使用的语言,所以本机代码可以被处理器直接执行可以跳过伪代码直接把程序编译为本机处理器的指令为用户提供比伪代码更多的优化和调试选项,因此也更可取当使用扩展的数学计算时本机代码编译执行起来会更快从“工程(Project)”菜单项中选择“工程属性(ProjectProperties)”对话框就可以选择编译选项28工程属性对话框中的编译选项29本机代码编译选项选项说明代码速度优化让编译器产生更快的代码代码大小优化最小化编译后代码的大小。无优化放弃所有的优化选项。针对PentiumPro优化优化代码,使其支持在PentiumPro(tm)处理器上运行。产生符号化调试信息产生.pdb文件,其中包含允许用MicrosoftVisualC++5.0或其它兼容调试器进行调试的信息。30本机代码编译选项(续)无别名设定通知编译器应用程序不使用别名引用。(别名就是一个名字,它指向的内存位置已经被另外一个名字引用)取消数组边界检查禁用VisualBasic的数组边界检查。缺省情况下VisualBasic会检查一个数组的索引是否超出边界,如果越界会给出一个错误信息。取消整数溢出检查禁用VisualBasic的整数溢出检查。取消浮点错误检查禁用VisualBasic的浮点数错误检查。取消PentiumFDIV安全检查禁用对Pentium(tm)处理器浮点数除法的安全检查。允许不舍入的浮点操作允许不用对浮点数进行舍入获取精确值就对浮点数表达式进行比较。31生成编译文件设置好编译选项后就可以对工程进行编译了选中“文件(File)”菜单中的“生成‘工程名称’{EXE|DLL}”选项这样就对工程进行编译并检测所有的编译错误,最后在目标目录下生成EXE或DLL文件32条件编译只想编译程序中的部分代码在不同的版本中可以包括应用程序的某些特别的功能,例如–设计一个可以在不同的平台上运行的应用程序或者–在一个以多种语言发布的应用程序中显示信息在代码中可以使用预定义的常量来决定编译程序中的哪一部分代码将要被编译33条件编译(续)设置条件编译常数有三种方法:–在“工程属性”对话框中–在命令行中–在代码中条件编译常数有特别的作用范围,如何设置条件编译常数可能取决于希望常数具有怎样的作用范围34条件编译(续)#IfconGermanVersionThenMsgbox“GutenMorgen”#ElseIfconFrenchVersionThenMsgbox“BonJour”#ElseMsgbox“GoodDay”#EndIf如何设置范围“工程属性”对话框Public作用于工程中的所有模块命令行Public作用于工程中的所有模块代码中的#Const语句Private仅作用于声明该常数的模块35条件编译(续)为了把一个程序编译为德语版本,从“工程”菜单选择“工程属性”单击“工程属性”对话框中的“生成”选项卡,在“条件编译参数”字段中键入一个参数,例如conFrenchVersion=–1当程序被编译时,该参数将满足#If...Then的条件,处于#If...Then和#EndIf之间的代码将包含进编译后的程序中36条件编译变量通过冒号间隔来设置多个常数37在命令行中设置常数如果要从命令行启动编译,可以使用/d开关键入条件编译常数:vb6.exe/MakeProject1.vbp/dconGermanVersion=–1命令行的常数声明较之在“工程属性”对话框中键入的常数声明有较高的优先级,但并不清除它们;在“工程属性”对话框中设置的参数对后续的编译保持有效布尔值True和–1相等38#Const语句用来定义条件编译常数#Constconstantname=expressionconstantname是常量的名字,expression可以是文字、其它的条件编译常数或包含算术或逻辑运算符的任意组合例如,在代码中使用#Const语句来为一个日语版本定义一个条件编译常量:#ConstconJapanVersion=139打包和发布程序打包和发布向导–帮助我们为程序创建所需要的安装包装类型–把程序发布到软盘、网络或者Web上–这些文件中包含VB运行时所需要的库、任何其它必需的.dll文件和帮助文件、数据文件、文档和ReadMe文件–创建两种类型的软件包标准软件包Internet软件包40打包和发布程序(续)打包–把程序的可执行文件包装到一个称为发布单元的软件包中的操作–易于开发而且易于将应用程序安装到用户的计算机上41启动向导一种启动方法–从“开始”菜单中选中“程序”–从MicrosoftVisualStudio6.0中选中MicrosoftVisualBasic6.0工具–选中打包和展开向导另一种启动方法–从“外接程序”菜单中选中“外接程序管理器”–从外接程序列表中选中打包和展开向导–选中加载行为中的加载/卸载选项,然后单击“确定(OK)”按钮42启动向导(续)43启动向导(续)打包–把应用程序打包为可展开的.cab文件–