VB 6 程序设计

ZDNet软件频道 时间:2000-07-03 作者:Microsoft |  我要评论()
本文关键词:VB 6 程序设计
VB 6程序设计的FAQ
【「Microsoft Visual Basic 6.0」以下简称「VB6.0」】

Microsoft

问: VB6.0是否可兼容旧版本的控件,如Graph控件?
答:

可以。

旧版本的控件放置在VB6.0光盘中的CommonToolsVBControls目录中,您只要复制控件至 Windowssystem,并注册至系统中,即可在VB6.0使用旧版本的控件。详细信息请参考该目录的readme.txt。

问: VB6.0的示例文件位置?
答: 如果在 MSDN 安装过程中选取包括 Visual Basic示例,则示例文件会安装到以下目录中:C:Program FilesMicrosoft Visual StudioMSDN9898VS1033SamplesVB98。如果在 MSDN 安装过程中没有选取包含 Visual Basic示例,也可以在 MSDN CD 的以下目录中找到 Visual Basic 示例: D:SamplesVb98附注:以上所提到的磁盘驱动器字母可能会依据您系统的不同而改变。
问: 当在VB6.0开启VB5.0所制作的项目,如何让所有的控件都升级为VB6.0的控件?
答: 大部分控件均能顺利升级为VB6.0的控件,唯有COMCTL32.OCX, COMCT232.OCX, and MSCHART.OCX三个控件无法顺利升级。可以到网址http://msdn.microsoft.com /vbasic/downloads/download.asp?ID=088 下载ProjUpgd.exe。该实用工具可以帮您的VB5.0的控件顺利地升级为VB6.0控件。
问: VB5.0有提供一个实用工具- VBC.exe,可以修正ActiveX控件无法在设计时使用的问题(请参考 1836 VB5.0操作与使用),请问VB6.0是否也有提供这样的实用工具?
答: 有的。您可从 http://support.microsoft.com/download /support/mslfiles/Vb6cli.exe 下载VB6CLI.EXE。执行之后,产生下列文件:
VBC6.EXE
ENTDAT.DLL
LRNDAT.DLL
PRODAT.DLL
README.TXT
其使用方法及其修正的问题,请参考README.TXT
问: VB6.0的控件支持Unicode吗?
答: VB6.0大部分的控件仍未支持Unicode,目前支持Unicode的控件有Forms2.0,DataGrid Control 6.0,ADO Data Control 6.0以及DataReport。目前VB6.0的Disk1的 CommonToolsVBChineseunicode的目录中,有一个提供Unicode的示例。
问: 请问哪里可以安装Unicode版本的「Microsoft Forms 2.0 Object Library」 ?
答: 若您已安装Microsoft Office 97,那么您的VB6.0的设定使用项目中已有「Microsoft Forms 2.0 Object library」,但若您的系统中并没有Microsoft Office 97,请参考VB6.0的Disk1的 CommonToolsVBChineseform3 eadme.txt。但Microsoft Office97所附的riched20.dll仍无法支持Unicode,请改用 VB6光盘 的Disk1CommonToolsVBChinese ichedit iched20.dll,请参考readme.txt。
问: VB6.0的数据访问技术有无任何的改进?
答:

VB6.0的数据访问在许多方面都有改进,较有意义的功能如下:

  • ADO2.0/OLE DB访问异类数据库的数据。
  • 新的Oracle模式和存储过程的设计能力。
  • 数据环境- 可设计基于ADO的数据访问组件。
  • 集成了新的Report Writer。
  • FlexGrid 控件可显示分层式数据。
  • 改进的数据绑定功能。
问: VB6.0可以符合设计多层的需求吗?
答:

可以。

在表示层, VB6.0可以供制作基于Win32-, Dynamic HTML-, 或HTM的客户端; 在中间层, VB6.0可产生线程安全的组件,可供Microsoft Transaction Server使用。

问: 我如何使用VB6.0开发Web程序?
答:

VB6.0提供了一些Web程序开发的功能:

  • WebClass设计器-创建跨平台、跨浏览器的应用程序。
  • 创建COM组件-可被ASP程序呼叫。
  • Dynamic HTML Page Designer(动态HTML页面设计器)-产生DHML页面 。
  • 产生ActiveX控件-可被Web 程序使用。
问: 我想要使用WebClass开发Web应用程序,却不知该如何着手,能否提供一个简易的示例?
答:

下面的步骤提供您建立一个简易的IIS应用程序:

  1. 从「文件」/「建立新工程」,选择「IIS应用程序」。
  2. 为您的工程命名,并保存。否则您无法导入HTML 文件。
  3. 从 WebClass 设计窗口中,选择「新增HTML模板的WebItem」,加入一个HTML文件。
  4. 此HTML Template Webitem 预设名称为「Template1」。
  5. 将 Sub WebClass_Start() 改为 Private Sub WebClass_Start() Set NextItem = Template1 End Sub注:NextItem用来在单一请求过程中,从一个WebItem向另一个移交处理。使用NextItem可以启动Private Sub Template1_Respond()。
  6. Private Sub Template1_Respond() Template1.WriteTemplate End Sub注:Template1.WriteTemplate将Template1的内容发送给客户端浏览器。记住Template1时您导入到IIS应用程序中的HTML文件。如果您在这种情况下未发送任何内容,浏览器将显示一个空白页。
  7. 按 F5 执行此程序 PS. 1. 若您有安装MSDN的示例,您可参考此示例 Microsoft Visual StudioMSDN9898VS1033SamplesVB98WcDemoWCDEMO.VBP2. 为了您的过程有较佳的performance ,建议设置过程属性=> 选定「执行时无用户接口」,「保留于内存中」及"线程模型"选择「公寓模型线程」。
如何利用DHTML Page Designer创建HTML应用程序?
答: 下面的资料提供了利用DHTML Page Designer来创建一个简单的HTML应用程序:http://support.microsoft.com/support/kb/articles/Q192/5/52.asp
问: MDAC2.0 包含哪些组件?
答: MDAC 2.0 包含了 ODBC 3.51, OLE DB 2.0, ActiveX Data Objects (ADO) 2.0和 Remote Data Service (RDS) 2.0.
问: 有没有方法删除MDAC2.0或其中的组件?
答: MDAC2.0安装完后,并不会在添加/删除程序中看到该组件。因此无法从添加/删除程序中,将MDAC2.0删除。不过您可从网站下载一个实用工具-- Clsidvw.exe,此工具会字典检测系统中所安装的MDAC组件,并可单独选择要删除的组件,它不仅会将文件删除,还会从系统中删除注册信息。网址为:http://support.microsoft.com/download/support/mslfiles/Clsidvw.exe
问: 如何在ADO2.0中使用Data Link File(数据链接文件)?(新)
答:

使用数据链接文件的好处是代码中不会有ConnectionString的信息,而是指向UDL文件,其方法如下:

  1. 先产生一个"Microsoft数据链接"类型的文件(按鼠标右键,选择打开文件的类型为"Microsoft Data Link(Microsoft数据链接)")并保存。
  2. 直接打开该文件,设置OLE DB Provider,Server或DSN等ConnectionString的信息。
  3. 在ADO 程序中使用此文件,如:cnPubs.ConnectionString = "File Name=C:PathPubs.UDL;"
问: MSFlexGrid 控件,第一栏及第一列预设为Fixed(固定),但不填入数据,如何让第一栏能填入数据,并且为Fixed?
答: 在设计环境中将MSFlexGrid控件的FixedCols设为0,然后在Form_Activate事件中加入 MSFlexGrid1.FixedCols = 1。就能让第一列又能填入字段值,又能固定。
问: 如何打印MSChart控件的内容?
答: MSChart 控件并无提供打印图表内容的方法,您可使用PrintForm打印整个窗体,或使用下列程序打印MSChart的内容:

MSChart1.EditCopy
Printer.Print " "
Printer.PaintPicture Clipboard.GetData(), 0, 0
Printer.EndDoc
问: 如何在VB中关闭Windows95,Windows98,Windows NT?
答:

以下的程序示例供您参考:
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

问: 我在Internet Explorer 执行VB所产生的ActiveX文档,却产生了下列的错误信息,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的属性来打开表单,或是使用下列程序测试Container是否有支持vbModeless:

If App.NonModalAllowed Then
 frmModeless.Show vbModeless
Else
 frmModeless.Show vbModal
End If

问: 如何使用WinInet API设置和获得一个URL的cookie?
答:

您可以利用WinInet.dll中的InternetSetCookie 及 InternetGetCookie API。

VB 6 程序设计


百度大联盟认证黄金会员Copyright© 1997- CNET Networks 版权所有。 ZDNet 是CNET Networks公司注册服务商标。
中华人民共和国电信与信息服务业务经营许可证编号:京ICP证010391号 京ICP备09041801号-159
京公网安备:1101082134