VBGood网站全文搜索 Google

搜索VBGood全站网页(全文搜索)
首页 - 经验之谈 - VB编程技术问答
发表评论(0)作者:不详, 平台:VB6.0+Win98, 阅读:9174, 日期:2001-05-04
问题一 怎样发布你的应用程序

---- Visual Basic应用程序建立后,都要发布给用户使用,我们通常采用"VB中的应用程序安装向导"来完成这个工作,使用这一工具所创建的应用程序,可以自由地发布给任何使用Microsoft Windows 的用户。

---- 首先启动"VB中的应用程序安装向导",显示如下画面:



---- 然后单击"下一步",显示如下画面。



---- 然后按向导的提示,进行相应操作即可。在这里我们主要是要向大家介绍如何解决打包和发布中出现的问题。

---- 1.注意你的发布权力和范围

---- 由于受到软件知识产权的影响,任何软件都有它的发行权限。在Visual Basic中,你可以自由地发布任何由Visual Basic创建的应用程序、部件、DLL、Active X控件、各种媒体文件、示例应用程序(在\Samples子目录下)以及系统第一次安装Visual Basic时最初复制到Visual Basic主目录的\Icons子目录、\Graphics子目录、\ODBC子目录下的任何文件。但除此之外的其它软件一般都不允许你发布。例如:你的应用程序中包含有对Word97、Excel 97的引用(或者是在VB的应用程序中发布网络浏览器IE 中的WebBrowser控件),那么"应用程序安装向导"在创建你的安装程序时,就会因试图发布无权发布的软件而出错,具体提示信息如下:





---- 错误原因:因为我们无权用Visual Basic的"应用程序安装向导"来发布office97中的Word 97和Excel 97。

---- 那么既然我们不能在VB的应用程序中发布Word 97和Excel 97,又怎么样保证应用程序中的引用能得以实现呢 ?

---- 解决办法①: 如果用户的计算机上已经安装了Word 97和Excel 97,那么直接安装你开发的应用程序即可。

---- 解决办法②: 如果用户的计算机上还未安装Word 97和Excel 97,那么只要在运行你的应用程序之前,安装上Word 97和Excel 97即可。

---- 需要说明的是,上述解决方法具有普遍性,如果你的应用程序在发布时遇到类似的问题,均可照此处理。

---- 2.从属文件过期会影响软件发布吗 ?

---- 在使用"应用程序安装向导"创建你的安装程序时,可能会出现这样一个错误,具体提示信息如下:



---- 如果你此时不管它,又继续按了"下一步",则会提示出如下信息:



---- 此时如果你回答"是",则安装程序将继续向下执行。最后你会发现,"应用程序安装向导"为你创建的安装程序是完全正常的,而并非上述提示所说的"安装程序和您的应用程序可能不能正常工作"。

---- 原因:这是由于VB要求的CommonDialog控件的版本(比如:Version=5.0.37.14)和Windows中现有的COMDLG32.OCX版本(比如:Version=5.01.4319)不一致造成的。注意VB要求的CommonDialog控件的从属文件名为comdlg32.dep,它和Windows中的COMDLG32.OCX 文件都在Windows\system目录中。大家如有性趣可到该目录看看。

---- 解决方法:由于这是一个提示性的警告信息,所以它并不影响"应用程序安装向导"的执行。因此大家如果遇到此错误提示,可以忽略它,继续执行下一步即可。

问题二 重叠菜单和自弹菜单

---- 1. 解决Windows 98中的重叠菜单

---- 信不少Windows用户可能都有这样的体验:Windows 98 比Windows 95使用更方便、功能更强,但是过去在Windows 95环境下正常运行的软件,未必在Windows 98下能正常执行(尽管微软一再宣称,Windows 98 和Windows 95有良好的兼容性)。我们在使用VB5.0编写应用程序时,就遇到这么一例。这是一个用VB5.0编写的应用程序,程序中的用户菜单是用"菜单编辑器"编辑的,为了给用户提供"向导"信息,我们在显示菜单的同时,增加了一个MsgBox对话框(用以显示一些提示信息),具体代码如下:

---- Form1.Caption="这是一个在Windows 98中文版下运行的VB5.0演示程序"

Mnuxxa.Visible=True
' 显示主菜单中各菜单项
Mnuxxb.Visible=True
Mnuxxc.Visible=True
Mnuxxd.Visible=True
Mnuxxe.Visible=True
Mnuxxf.Visible=True

---- MsgBox "本软件是一个演示程序,请先选取"输入相关数据"菜单",64,"提示信息"
---- 该程序在Windows 95下运行正常,但拿到Windows 98 下运行后,却出现了一个如下图所示的重叠显示菜单。在调试过程中我们发现,如果去掉程序中MsgBox语句,菜单显示便正常了,但MsgBox 语句中的向导信息就无法显示了。我们也曾调整过各语句的先后顺序,我们发现当把MsgBox 语句放到Mnuxxa.Visible=True语句之前时,菜单也能正常显示,但此时无法做到菜单和提示信息同时显示(即提示信息先显示,然后才显示菜单)。

---- 解决办法:在上面的程序段中增加一条语句:Form1.Refresh ,即对菜单所在窗体进行动态刷新,便可彻底解决这个问题。



---- 2. 如何自动弹出预定菜单

---- 在设计应用程序过程中,我们常常要求应用程序在显示用户菜单时,能自动弹出并显示它的某一个子菜单。如果你想在应用程序中实现这个功能,就必须按如下几步来进行:

首先要为你的菜单项设置快捷键。比如:我们现在要为菜单中的"输入相关数据"菜单项建立快捷键"ALT+R",则可先在"菜单编辑器"中建立这个菜单项,然后在"标题"栏中输入如下内容:
输入相关数据(&R)

这样我们便建立了这个菜单项,并将"ALT+R"设定为它的快捷键。

激活、并显示菜单,即执行上例中的那段小程序。

利用Windows系统所提供的消息机制,向Windows系统发送一个快捷键被按下的消息,以此来模仿快捷键被按下效果,这样便可由程序自动实现快捷键被下的动作了。
---- 在VB5.0中的SendKeys 语句可以实现这个功能。它可以将一个或多个按键消息发送到活动窗口,就如同在键盘上进行输入一样。其语法格式如下:

SendKeys string[, wait]

---- 其中参数string是指要发送的按键消息。参数Wait为可选项。它指定等待方式的 Boolean 值。如果为 False(缺省值),则控件在按键发送出去之后立刻返回到过程。如果为 True,则按键消息必须在控件返回到过程之前加以处理。值得注意的是,对于 SendKeys 来说,加号 (+)、插入符 (^)、百分比符号 (%)、上划线 (~) 及圆括号 ( ) 都具有特殊意义。比如:加号(+)代表SHIFT 键,插入符 (^)代表CTRL键,百分比符号 (%)代表ALT键。所以如果我们要发送"ALT+R"按键消息,SendKeys 语句应写成:SendKeys "%R", False
---- 能完成上述功能的程序段如下:
---- Form1.Caption="这是一个在Windows 98中文版下运行的VB5.0演示程序"

Mnuxxa.Visible=True
' 显示主菜单中各菜单项
Mnuxxb.Visible=True
Mnuxxc.Visible=True
Mnuxxd.Visible=True
Mnuxxe.Visible=True
Mnuxxf.Visible=True

---- MsgBox "本软件是一个演示程序,请先选取'输入相关数据'菜单",64,"提示信息"
SendKeys "%R", False
Form1.Refresh

---- 程序执行结果见下图: