【问题标题】:"User-defined type not defined" error in VB 6 under Windows 7Windows 7 下 VB 6 出现“未定义用户定义类型”错误
【发布时间】:2011-01-13 07:31:00
【问题描述】:

我使用的是 Windows 7,我的项目是 VB 6.0。我在执行程序时遇到错误。它显示错误:

用户自定义类型未定义。

这是我的代码:

Private Sub Toolbar1_ButtonClick(ByVal Button As MSComctlLib.Button)
    Select Case Button.Key
        Case "trace": Call mntrace_Click
        Case "snrplot": Call mnSnrplot_Click
        Case "skyplot": Call mnskyplot_Click
        Case "nmea": Call mnNmea_Click
        Case "navigation": Call mnNavigation_Click
        Case "survey": Call mnSurvey_Click
        Case "pause/start": Call mnpause_Click
        Case "save": Call mnsave_Click
        Case "print": Call mnprint_Click
        Case "offline": Call mnoffline_Click
    End Select
End Sub

我该如何解决这个错误?

【问题讨论】:

  • 除非您发布一些代码,否则您希望我们如何调试这样的问题?具体来说,调试器会为您突出显示包含错误的部分。
  • Private Sub Toolbar1_ButtonClick(ByVal Button As MSComctlLib.Button) 选择案例 Button.Key 案例“trace”:调用 mntrace_Click 案例“snrplot”:调用 mnSnrplot_Click 案例“skyplot”:调用 mnskyplot_Click 案例“nmea”:调用 mnNmea_Click 案例“导航”: 调用 mnNavigation_Click 案例“调查”: 调用 mnSurvey_Click 案例“暂停/开始”: 调用 mnpause_Click 案例“保存”: 调用 mnsave_Click 案例“打印”: 调用 mnprint_Click 案例“离线”: 调用 mnoffline_Click 结束 选择结束子

标签: windows-7 vb6


【解决方案1】:

当错误出现时,编译器会自动为您突出显示函数声明的第一行。这意味着错误发生在该行的某处。有时这并没有你想的那么有用,但在这种情况下,它可以告诉你很多。

具体来说,出现在函数声明中的唯一“用户定义类型”(实际上是唯一的“类型”)是MSComctlLib.Button。编译器错误消息在这里告诉您的是它不知道 MSComctlLib.Button 是什么。因此它假定它是一个“用户定义的” 类型,因为它通常不知道用户在说什么。 :-)

无论哪种方式,解决方法都很简单:您需要告诉编译器 MSComctlLib.Button 是什么。在这种情况下,假设它是用户定义的类型是错误的。它实际上是 Microsoft Windows 公共控件库中提供的 button 控件。 要告诉 VB 6 这个控件,你需要在你的项目中添加相应的组件。请按以下步骤操作:

  1. 从“项目”菜单中,选择“组件”。

  2. 在出现的对话框中,将列表向下滚动到 M 的大约 2/3。勾选“Microsoft Windows Common Controls 6.0”和“Microsoft Common Controls-2 6.0”项。 (如果您的服务包名称不同,请不要担心。)

         

  3. 单击“确定”按钮。如果你很快,你会看到一些额外的控件被添加到你的工具箱中。这些是您刚刚添加的组件库提供的控件。在这些控件中,有一个叫做Button

最后,再次尝试编译并运行您的项目——这次一切都应该没问题,因为现在编译器知道MSComctlLib.Button 类型是什么。如果您仍然没有,它是工具栏上显示的一个按钮。工具栏控件由 Common Controls 库提供,它包含一个类型,用于定义出现在该工具栏上的单个按钮。

【讨论】:

  • 按照这些步骤后,我得到了对象库丢失。我如何删除它?
【解决方案2】:

听起来您缺少对对象库的引用。

(你在其他地方执行过没有错误吗?)

【讨论】:

  • 抱歉,我无法得到你。你能解释一下吗?
  • 我认为 Cody Gray 在上面已经解释得很好:-)
【解决方案3】:

我认为您只是从其他地方复制并粘贴了该代码。通常,如果您想引用 MSComctlLib,通常会先执行 Cody Gray 此处所述的步骤,然后才能访问类型库。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-08-15
    • 2012-07-19
    • 1970-01-01
    • 2021-11-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多