Visual Basic 6 - 编译错误:未定义用户定义的类型

时间:2016-02-28 13:09:42

标签: compiler-errors vb6

我已经反编译了一个旧的Visual Basic 6项目,并使用安装在Windows XP虚拟机上的Visual Basic 6打开它。

当我尝试重新编译代码时,我得到了这行代码的错误“编译错误:用户定义的类型未定义” -

Private Declare Function InvalidateRect Lib "user32" (ByVal hwnd As Long, lpRect As RECT, ByVal bErase As Long) As Long

据我所知,他的功能是User32 Windows Library的一部分。

我试图添加user32.dll作为组件/参考,没有运气。

1 个答案:

答案 0 :(得分:4)

添加user32.dll作为组件/参考将工作。您必须显式声明要使用的所有Win32 API类型和函数。 VB 6包含了API查看器,可以帮助您解决这个问题,尽管它已经过时了。

据推测,此处未定义的用户定义类型为RECT。它是由Win32标头定义的结构,但除非您自己声明,否则VB不知道它。

Public Type RECT
  Left As Long
  Top As Long
  Right As Long
  Bottom As Long
End Type

您还可以将lpRect的数据类型更改为As Any,以便允许传递空指针(例如ByRef 0)。这会使控件的整个区域无效。

Private Declare Function InvalidateRect Lib "user32" (ByVal hwnd As Long, _
                                                      ByRef lpRect As Any, _
                                                      ByVal bErase As Long) As Long