Visual Basic 6 - 编译错误:用户定义类型未定义
问题描述:
我已反编译旧的Visual Basic 6项目,并使用安装在Windows XP虚拟机上的Visual Basic 6打开它。Visual Basic 6 - 编译错误:用户定义类型未定义
当我试图重新编译代码我得到的错误“编译错误:没有定义的用户定义类型”为这行代码 -
Private Declare Function InvalidateRect Lib "user32" (ByVal hwnd As Long, lpRect As RECT, ByVal bErase As Long) As Long
据我所知,他的功能是USER32 Windows的一部分图书馆。
我试图添加user32.dll作为组件/参考,没有运气。
答
添加user32.dll作为组件/参考将不是工作。您必须明确声明您要使用的所有Win32 API类型和函数。 VB 6包含了API Viewer,它可以帮助你解决这个问题,尽管它非常过时。
据推测,这不是此处定义的用户定义类型是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