首页 | 新闻 | 短信 | 邮件 | 商城 | 搜索 | 社区 | 在线 | 企业
搜狐首页 >> IT频道首页 >> 软件生活 >> 软件使用 >> 编程天地
Visual Basic常见问题集锦(1)
2001-07-29 10:57  作者: 杨冶军  转自: 计算机世界
Visual Basic 6.0 是什么?
Visual Basic 6.0 是用来创建高性能的企业应用程序及基于 Web的应用程序的最有效工具。Visual Basic 6.0 使开发者得以创建驻留在客户或服务器上或运行在分布式 n-层环境里的强壮应用程序。Visual Basic 6.0 这个快速应用开发(Rapid Application Development:RAD)工具既可以作为一个单独的产品也可以作为 Visual Studio 6.0 套件的一个组成部分。
 
如何安装Visual Basic?
 
安装的步骤如下:
1. 开始下载之前,先在您的计算机上建立一个下载目录。
2. 单击每条超级链接,便开始下载。将下载文件保存在您所创建的目录。
3. 将下载的文件解压到同一目录下。
4. 如果您已安装了MDAC 2.5,直接到第五步。否则,需运行MDAC_typ.exe文件来安装MDAC 2.5。
5. 运行SetupSP5.exe。
 
Visual Basic 6.0 在Visual Studio 中扮演什么角色?
Visual Basic 6.0 是 Microsoft Visual Studio 开发工具套件中的一个成员,为 Visual Studio 开发人员提供了用来创建应用程序和构件的生产效率最高的环境。
Microsoft Visual Studio 是一整套开发工具,向各大企业提供了创建解决方案的简单易用的工具。Visual Studio 专业版使开发者得以完全享受到 Microsoft Windows 操作系统及 Web 领域的发展带来的好处。Microsoft Visual J++、 Microsoft Visual Basic 开发系统、Microsoft Visual C++ 开发系统、 Microsoft Visual InterDev Web 开发系统及 Visual FoxPro 数据库开发系统,各具特色,各擅胜场。Visual Studio 企业版是快速创建以数据为中心的企业解决方案的完全套件。它包含诸如:可视化数据库工具(Visual Database Tools)、Microsoft Visual SourceSafe 版本控制系统、Microsoft Repository(Microsoft 储藏室)、可视化构件管理器(Visual Component Manager)、Microsoft Visual Modeler 和 Microsoft BackOffice 家族系列应用服务器的开发版本等企业和工作组开发特性。
 
哪个版本的 Visual Basic 6.0 最适合我?
Visual Basic 6.0, 标准版不要求事先的编程经验。这个版本是为学生、业余爱好者和别的任何想更多地了解基于 Windows 的应用程序是如何开发的人而设计的。
Visual Basic 6.0, 专业版是为需要创建客户/服务器应用程序或能访问 Internet的应用程序的个体专业人员或公司开发人员设计的。
Visual Basic 6.0, 企业版是为欲创建分布式、高性能的客户/服务器应用程序或 Internet 及 intranet 上的应用程序的开发组设计的。
 
Visual Basic 6.0 中有些什么新内容?
关键的新特性包括以下这些:
 
1. 集成的可视化数据库工具:Visual Basic 6.0 提供一整套工具以在任何应用程序中集成数据库。数据库特性包括用来设计和修改 Microsoft SQL Server、 Oracle 7.3.3 或以上及 AS/400 的数据库的工具。
 
2. 数据环境设计器:使用拖放功能来可视化地创建可重用的记录集命令对象。绑定到多个数据源上,以聚集和操作数据。
 
3. 用拖放方式创建绑有数据的表格和报告:使用新的数据环境设计器,开发者可迅速拖放自定义的绑有数据的控件来创建表格;可用新的数据报表设计器来创建报表。创建自定义数据层阶结构也非常容易,只需填写一个对话框,再将命令拖入表格中即可。
 
4. Visual Basic WebClass 设计器:创建可在任何平台上用任何 Web 浏览器访问的服务器方应用或构件。
 
5. 动态 HTML 页面设计器:开发用文档对象模型和动态 HTML 平面作用户界面的富于多媒体的应用。
新的性能方面的增强。使用新的字符串函数和诸如驻留内存(Retain in Memory)的技术来创建更快、可调节性更好的应用程序和构件。
 
Visual Basic 6.0 如何使我得以创建企业解决方案?
Visual Basic 6.0 是 Microsoft 的首要企业开发套件 Visual Studio 6.0企业版工具套件的一个成员。Visual Studio 6.0 企业版为企业开发人员带来了若干新特性,包括:
 
1. 企业数据库支持,包括用来做 Oracle 和 SQL Server 数据库上的数据概图和存储过程设计的企业可视化数据库工具(企业版 Visual Database Tools);SQL Server 6.5 的开发版及与 AS400 和 IBM 大中型机上的 VSAM 和 DB/2 数据库相连接的 SNA Server 4.0 的开发版。
 
2. 增强的生存周期生产力,包括用来设计基于通用模型语言( Universal Modeling Language:UML)的多层应用的 Microsoft Visual Modeler 2.0(可视化建模器);及给多层应用做性能描绘和分析的 Visual Studio Analyzer(分析器)。
 
3. 组开发支持,包括一个分布式的、基于工作组的 Web 开发系统,Visual SourceSafe 6.0 源码控制系统,Microsoft Repository(储藏室)及用来组织和在工作组间共享可重用商务构件的工具,Visual Component Manager 2.0(可视化构件管理器)。
 
4. 集成的应用服务,包含 Microsoft BackOffice 4.5 的开发版,带有包括数据库、事务、消息队列、消息传递与合作、Web 应用、安全 及 SNA 连接在内的集成应用服务。
 
Visual Basic 6.0 中有那些新增特性能提高用 Visual Basic 写成的应用程序的性能?
Microsoft 在 Visual Basic 中做了若干改良以提高性能。首次在 Visual Basic 5.0 中引入的自然代码编译只是这些用来提高应用程序性能的重要特性之一。根据语言性能基准(benchmarks)Visual Basic 6.0 要比 Visual Basic 4.0快上足 20 倍。这些新特性包括"驻留内存"选项,这个选项将服务器分布式(server-distributed)应用程序的(已载入的)构件结构高速缓存在内存里。
 
WebClasses 是什么,应该何时使用?
Visual Basic 6.0 WebClasses 是基于 Web 服务器的 COM 构件,它赋予Visual Basic 编程人员以在 Visual Basic 开发环境内书写代码来自定义 Web 服务器的 URL 响应的能力。由此生成的 Visual Basic 应用程序是一个跨平台的基于服务器的应用,并可在任何平台上用任何 HTML 浏览器访问。
 
Visual Basic WebClasses 被设计用来帮助开发者完成以下任务:
1. 使用 Visual Basic 的事件驱动模型来创建基于 Web 的应用,以便将应用逻辑从用户界面隔离开来。
2. 创建现存 Visual Basic 应用程序的基于 Web 的前端。
3. 创建自定义的服务器方 COM 构件,以便在单一的环境里调试其应用程序。
 
为何我希望调用App.LogEvent方法将调试信息写入Windows NT的事件日志(Event Log)中,但我在调试时始终看不到有任何内容被写入?
这个功能仅对编译过的VB程序起作用,如果你在VB环境下执行,该语句会被忽略。为了在VB环境调试时也能使用该功能,你可以用VB编写一个ActiveX DLL组件,此组件公开一个方法用于写事件日志,将其编译后供你的VB程序调用。
 
什么是Visual Basic 6.0新添的模板特性?
模板使您能够创建一个公用的表单(Form),它可被任何VB程序重用,便于提高开发效率和实现一致的程序界面。
 
VB能否编写Windows NT/2000的服务程序(Service)?
Service程序一般都要在后台长期的运行,因此安全、稳定、健壮是Service程序的基本要求,这也要求一种更接近操作系统的语言来开发Service程序。Visual Basic 是一种高级编程语言,一般情况下我们需要使用ActiveX 组件来实现程序功能,但是我们往往不能清楚的了解到这些组件的具体实现细节,因此VB并不适合于开发Windows NT/2000的服务程序,而Visual C++则是一种较合适的语言。微软公司目前不推荐,也不支持用VB开发服务程序。
 
VB6.0是否支持继承,多态?
继承分为实现继承(implementing inherit) 和接口继承(Interface inherit), VB6.0的类模块提供接口继承的支持。使用implements 语句能实现接口继承。 VB6.0程序中能将子类赋于父类实现多态, 事实上它是通过对父类接口的查询(QueryInterface)来实现多态。
 
VB6.0创建的ActiveX DLL/EXE是否支持MTA?
VB6.0创建的ActiveX DLL的线程模式是STA或Thread-Oblivious, 任何MTA客户访问组件前必需创建一个新的线程,由新线程进入STA创建对象,然后返回接口代理。ActiveX EXE 的Thread Pool 也不是MTA,每一个新对象的创建都存在一个新的STA中,直到线程数量达到Pool的设定值。
 
我用VB开发了一个ActiveX EXE,其中包含了多个Class模块,但为何在DCOMCNFG..EXE中只看到一个Class?
DCOM提供了Server级的安全特性,所有在同一Server内的对象共享一个安全设置因此我们在DCOMCNFG..EXE中只能看到每个ActiveX EXE的第一个对象(Class)。
 
我在Internet Explorer 执行VB所产生的ActiveX Document,却产生了下列的错误信息,Run-time error '406': Non-modal forms cannot be displayed in this host application from an ActiveX DLL, ActiveX Control or Property Page. 如何解决?
这是ActiveX Document在 Internet Explorer执行的限制。您需使用 vbModal的属性来Open form。或是用下列代码,来测试Container是否支持vbModeless:
If App.NonModalAllowed Then
frmModeless.Show vbModeless
Else
frmModeless.Show vbModal
End If
 
为什么用VB的Internet Transfer Control (ITC)编写的FTP客户端应用程式,在联接某些服务器上(如IBM大型机等)的FTP服务时,工作不正常?
标准的FTP协议提供了两种传输模式:基于二进制的(Binary)和基于ASCII。Microsoft的ITC控件只实现了比较常用的传输模式:二进制传输模式(Binary)。而一些比较早的大型机上FTP服务往往是基于ASCII传输模式,这就使得ITC与这些机器上的FTP服务不兼容。
解决方法:使用WinInet API来实现上述两种模式的传输过程。
 
我下载并安装了MSXML3.EXE,但是我在程序中使用CreateObject("Microsoft.XMLDOM") ,发现还是用原来MSXML, 这是为什么?
缺省情况下,MSXML3 会与老版本(MSXML 2.5 or 2.5 SP1, 2.6)并行地安装在系统中, 这就提供很大的灵活性。但是,我们必须使用不同的Prog ID 来创建不同版本的对象。例如:
MSXML2.DOMDocument.2.6
MSXML2.DOMDocument.3.0
此外,也可以选择替换方式的安装。详情请见:
Installing Msxml3.dll in Replace Mode
 
如何在VB6.0获取Office文件的「摘要信息」?
网站上已经有一个用VC++写好的DLL,提供给VB程式开发人员,无需打开Office,即可读取这些利用OLE结构存储的文件。此DLL节省了程序开发人员相当多的时间。
 
VB如何调用C DLL时的参数传递?
首先必须了解此函数在C中的原型,包括参数类型和传递方式。
 
注意: 我们不推荐使用此方式, 如果DLL要接收一个字符串缓冲,一定要在调用前初始化字符串, 用户子定义类型必须用ByRef方式传递, 任何内核对象的句柄(process, thread, module, file, filemapping, semaphore等)和大多数GDI对象句柄都能用此方式传递。 API Viewer 能帮助我们声明API函数, 我们可以更据需要修改参数传递方式。
 
如何在VB 实现Windows95/98,Windows NT/2000关机?
请参考以下代码:
 
Option Explicit
 
Private Type LUID
UsedPart As Long
IgnoredForNowHigh32BitPart As Long
End Type
 
Private Type TOKEN_PRIVILEGES
PrivilegeCount As Long
TheLuid As LUID
Attributes As Long
End Type
 
'Beginning of Code
 
Private Const EWX_SHUTDOWN As Long = 1
Private Const EWX_FORCE As Long = 4
Private Const EWX_REBOOT = 2
 
 
Private Declare Function ExitWindowsEx Lib "user32" ( _
ByVal dwOptions As Long, ByVal dwReserved As Long) As Long
Private Declare Function GetCurrentProcess Lib "kernel32" () As Long
 
Private Declare Function OpenProcessToken Lib "advapi32" ( _
ByVal ProcessHandle As Long, ByVal DesiredAccess As Long, _
TokenHandle As Long) As Long
 
Private Declare Function LookupPrivilegeValue Lib "advapi32" _
Alias "LookupPrivilegeValueA" (ByVal lpSystemName As String, _
ByVal lpName As String, lpLuid As LUID) As Long
 
Private Declare Function AdjustTokenPrivileges Lib "advapi32" ( _
ByVal TokenHandle As Long, ByVal DisableAllPrivileges As Long, _
NewState As TOKEN_PRIVILEGES, ByVal BufferLength As Long, _
PreviousState As TOKEN_PRIVILEGES, ReturnLength As Long) As Long
 
Private Sub AdjustToken()
 
Const TOKEN_ADJUST_PRIVILEGES = &H20
Const TOKEN_QUERY = &H8
Const SE_PRIVILEGE_ENABLED = &H2
 
Dim hdlProcessHandle As Long
Dim hdlTokenHandle As Long
Dim tmpLuid As LUID
Dim tkp As TOKEN_PRIVILEGES
Dim tkpNewButIgnored As TOKEN_PRIVILEGES
Dim lBufferNeeded As Long
 
hdlProcessHandle = GetCurrentProcess()
 
OpenProcessToken hdlProcessHandle, (TOKEN_ADJUST_PRIVILEGES Or _
TOKEN_QUERY), hdlTokenHandle
 
' Get the LUID for shutdown privilege.
 
LookupPrivilegeValue "", "SeShutdownPrivilege", tmpLuid
tkp.PrivilegeCount = 1 ' One privilege to set
tkp.TheLuid = tmpLuid
tkp.Attributes = SE_PRIVILEGE_ENABLED
' Enable the shutdown privilege in the access token of this
' process.
AdjustTokenPrivileges hdlTokenHandle, False, tkp, _
Len(tkpNewButIgnored), tkpNewButIgnored, lBufferNeeded
End Sub
 
Private Sub cmdForceShutdown_Click()
AdjustToken
ExitWindowsEx (EWX_SHUTDOWN Or EWX_FORCE Or EWX_REBOOT), &HFFFF
End Sub

 

我来说两句 去相关俱乐部 发短信息
     为搜狐IT频道查错 得每日精彩大奖——点击可了解详细信息
搜狐IT频道:体察IT业界动态,传播IT时尚生活——点击进入 >>滚动新闻
相关连接
请发表您的看法
用户: 匿名发出
您要为您所发的言论的后果负责,故请各位遵纪守法并注意语言文明。
留言:
*经营许可证编号:京ICP00000008号
*遵守《互联网电子公告服务管理规定》
*遵守《全国人大常委会关于维护互联网安全的规定》

新闻搜索
关键字:

三重奖励,百分百中奖
·找老乡尽在激情老乡会
·攒魔法袜子拿圣诞礼物
搜狐彩信最新推荐
·[] 眉飞色舞
·[] 厉鬼再现
热门词:必杀功 林忆莲
精彩订阅
新闻资讯
美国正式宣布萨达姆已被捕!
订阅 焦点新闻,了解详情


搜狐商城
·影视|徐静蕾我和爸爸
·音乐|欧美音乐盛典展
·书籍|黑客大曝光
·书籍|1元图书特卖场
·化妆|畅销精品优惠哦
·精品|zippo火机5折起
更多...


网站登录 - 搜狐招聘 - 广告服务 - 联系方式 - 保护隐私权 - 公司介绍
Copyright © 2003 Sohu.com Inc. All rights reserved. 搜狐公司 版权所有